{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Numbers Summation (using RNN LSTM)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> - 🤖 See [full list of Machine Learning Experiments](https://github.com/trekhleb/machine-learning-experiments) on **GitHub**<br/><br/>\n",
    "> - ▶️ **Interactive Demo**: [try this model and other machine learning experiments in action](https://trekhleb.github.io/machine-learning-experiments/)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Experiment overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this experiment we will use [Recurrent Neural Network](https://en.wikipedia.org/wiki/Recurrent_neural_network) (RNN) to sum up two numbers (each number is in a range of `[1, 99]`). The summation expression (i.e. `\"1+45\"` or `37+68`) that will be sent to the RNN _input_ will be treated as a **string** (sequence of characters) and the _output_ of the RNN will also be a string (i.e. `\"46\"` or `\"106\"`) - the sequence of characters that will represent the result of summation. This is a \"sequence-to-sequence\" version of RNN implementation. We will use LSTM ([Long Short-Term Memory](https://en.wikipedia.org/wiki/Long_short-term_memory)) recurent neural network for this task.\n",
    "\n",
    "For this experiment we will use [Tensorflow v2](https://www.tensorflow.org/) with its [Keras API](https://www.tensorflow.org/guide/keras).\n",
    "\n",
    "![numbers_summation_rnn.png](../../demos/src/images/numbers_summation_rnn.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Inspired by [Learn to Add Numbers with an Encoder-Decoder LSTM Recurrent Neural Network](https://machinelearningmastery.com/learn-add-numbers-seq2seq-recurrent-neural-networks/) article."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Import dependencies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Selecting Tensorflow version v2 (the command is relevant for Colab only).\n",
    "%tensorflow_version 2.x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Python version: 3.7.6\n",
      "Tensorflow version: 2.1.0\n",
      "Keras version: 2.2.4-tf\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import platform\n",
    "import random\n",
    "import math\n",
    "import datetime\n",
    "\n",
    "print('Python version:', platform.python_version())\n",
    "print('Tensorflow version:', tf.__version__)\n",
    "print('Keras version:', tf.keras.__version__)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Configuring Tensorboard\n",
    "\n",
    "We will use [Tensorboard](https://www.tensorflow.org/tensorboard) to debug the model later."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the TensorBoard notebook extension.\n",
    "# %reload_ext tensorboard\n",
    "%load_ext tensorboard"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate a dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In order to train a neural network we need to generate a training dataset which will consist of examples `x` (set of summation expressions) and labels `y` (set of correct answers for each expression). We will start with generating a set of _numbers_ (not strings so far) and than we will convert the sets of numbers into _strings_."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "dataset_size = 5000\n",
    "sequence_length = 2\n",
    "max_num = 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Generates summation sequences and summation results in form of vector if numbers.\n",
    "def generate_sums(dataset_size, sequence_length, max_num):\n",
    "    # Initial dataset states.\n",
    "    x, y = [], []\n",
    "    \n",
    "    # Generating sums.\n",
    "    for i in range(dataset_size):\n",
    "        sequence = [random.randint(1, max_num) for _ in range(sequence_length)]\n",
    "        x.append(sequence)\n",
    "        y.append(sum(sequence))\n",
    "    \n",
    "    return x, y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_train:\n",
      " [[8, 79], [36, 39], [47, 15]]\n",
      "\n",
      "y_train:\n",
      " [87, 75, 62]\n"
     ]
    }
   ],
   "source": [
    "x_train, y_train = generate_sums(\n",
    "    dataset_size=dataset_size,\n",
    "    sequence_length=sequence_length,\n",
    "    max_num=max_num\n",
    ")\n",
    "\n",
    "print('x_train:\\n', x_train[:3])\n",
    "print()\n",
    "print('y_train:\\n', y_train[:3])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Recurrent neural networks are normally deals with the sequences (of one or many elements) on the input. In order to treat a summation expression as a sequence we will convert array of numbers (i.e. `[[13, 8], [85, 91], ...]`) into strings (i.e. `['13+8   ', '85+91  ', ...]`). We also want to add a space `\" \"` paddings to each string to make them all of the same length. After doing that we will be able to feed our RNN character by character (i.e. `1`, then `3`, then `+`, then `8`, then ` ` and so on)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Convert array of numbers for x and y into strings.\n",
    "# Also it adds a space (\" \") padding to strings to make them of the same length. \n",
    "def dataset_to_strings(x, y, max_num):\n",
    "    # Initial dataset states.\n",
    "    x_str, y_str = [], []\n",
    "    \n",
    "    sequnce_length = len(x[0])\n",
    "    \n",
    "    # Calculate the maximum length of equation (x) string (i.e. of \"11+99\")\n",
    "    num_of_pluses = sequnce_length - 1\n",
    "    num_of_chars_per_digit = math.ceil(math.log10(max_num + 1))\n",
    "    max_x_length = sequnce_length * num_of_chars_per_digit + num_of_pluses\n",
    "    \n",
    "    # Calculate the maximum length of label (y) string (i.e. of \"167\")\n",
    "    max_y_length = math.ceil(math.log10(sequnce_length * (max_num + 1)))\n",
    "    \n",
    "    # Add a space \" \" padding to equation strings to make them of the same length.\n",
    "    for example in x:\n",
    "        str_example = '+'.join([str(digit) for digit in example])\n",
    "        str_example += ''.join([' ' for padding in range(max_x_length - len(str_example))])\n",
    "        x_str.append(str_example)\n",
    "    \n",
    "    # Add a space \" \" padding to labels strings to make them of the same length.\n",
    "    for label in y:\n",
    "        str_example = str(label)\n",
    "        str_example += ''.join([' ' for padding in range(max_y_length - len(str_example))])\n",
    "        y_str.append(str_example)\n",
    "    \n",
    "    return x_str, y_str"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_train_str:\n",
      " ['8+79   ' '36+39  ' '47+15  ']\n",
      "\n",
      "y_train_str:\n",
      " ['87 ' '75 ' '62 ']\n"
     ]
    }
   ],
   "source": [
    "x_train_str, y_train_str = dataset_to_strings(x_train, y_train, max_num)\n",
    "\n",
    "print('x_train_str:\\n', np.array(x_train_str[:3]))\n",
    "print()\n",
    "print('y_train_str:\\n', np.array(y_train_str[:3]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Since we allow only numbers, plus sign and spaces the vocabulary looks pretty simple.\n",
    "vocabulary = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', ' ']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '+': 10, ' ': 11}\n"
     ]
    }
   ],
   "source": [
    "# Python dictionary that will convert a character to its index in the vocabulary.\n",
    "char_to_index = {char: index for index, char in enumerate(vocabulary)}\n",
    "\n",
    "print(char_to_index)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our RNN need to have a digits as an input to operate with (and not a strings). To convert summation expressions strings into number the first step we will do is to convert each character of each string into the position index of this character in the `vocabulary`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Converts x and y arrays of strings into array of char indices.\n",
    "def dataset_to_indices(x, y, vocabulary):\n",
    "    x_encoded, y_encoded = [], []\n",
    "    \n",
    "    char_to_index = {char: index for index, char in enumerate(vocabulary)}\n",
    "    \n",
    "    for example in x:\n",
    "        example_encoded = [char_to_index[char] for char in example]\n",
    "        x_encoded.append(example_encoded)\n",
    "        \n",
    "    for label in y:\n",
    "        label_encoded = [char_to_index[char] for char in label]\n",
    "        y_encoded.append(label_encoded)\n",
    "        \n",
    "    return x_encoded, y_encoded"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_train_encoded:\n",
      " [[ 8 10  7  9 11 11 11]\n",
      " [ 3  6 10  3  9 11 11]\n",
      " [ 4  7 10  1  5 11 11]]\n",
      "\n",
      "y_train_encoded:\n",
      " [[ 8  7 11]\n",
      " [ 7  5 11]\n",
      " [ 6  2 11]]\n"
     ]
    }
   ],
   "source": [
    "x_train_encoded, y_train_encoded = dataset_to_indices(\n",
    "    x_train_str,\n",
    "    y_train_str,\n",
    "    vocabulary\n",
    ")\n",
    "\n",
    "print('x_train_encoded:\\n', np.array(x_train_encoded[:3]))\n",
    "print()\n",
    "print('y_train_encoded:\\n', np.array(y_train_encoded[:3]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To make our dataset even more understandable for our recurrent neural network we will convert each number into `0/1` [one-hot vector](https://en.wikipedia.org/wiki/One-hot) (i.e. number `1` will be transformed into array `[0 1 0 0 0 0 0 0 0 0 0 0]`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Convert x and y sets of numbers into one-hot vectors.\n",
    "def dataset_to_one_hot(x, y, vocabulary):\n",
    "    x_encoded, y_encoded = [], []\n",
    "    \n",
    "    for example in x:\n",
    "        pattern = []\n",
    "        for index in example:\n",
    "            vector = [0 for _ in range(len(vocabulary))]\n",
    "            vector[index] = 1\n",
    "            pattern.append(vector)\n",
    "        x_encoded.append(pattern)\n",
    "            \n",
    "    for label in y:\n",
    "        pattern = []\n",
    "        for index in label:\n",
    "            vector = [0 for _ in range(len(vocabulary))]\n",
    "            vector[index] = 1\n",
    "            pattern.append(vector)\n",
    "        y_encoded.append(pattern)\n",
    "        \n",
    "    return x_encoded, y_encoded"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_train_one_hot:\n",
      " [[[0 0 0 0 0 0 0 0 1 0 0 0]\n",
      "  [0 0 0 0 0 0 0 0 0 0 1 0]\n",
      "  [0 0 0 0 0 0 0 1 0 0 0 0]\n",
      "  [0 0 0 0 0 0 0 0 0 1 0 0]\n",
      "  [0 0 0 0 0 0 0 0 0 0 0 1]\n",
      "  [0 0 0 0 0 0 0 0 0 0 0 1]\n",
      "  [0 0 0 0 0 0 0 0 0 0 0 1]]]\n",
      "\n",
      "y_train_one_hot:\n",
      " [[[0 0 0 0 0 0 0 0 1 0 0 0]\n",
      "  [0 0 0 0 0 0 0 1 0 0 0 0]\n",
      "  [0 0 0 0 0 0 0 0 0 0 0 1]]]\n"
     ]
    }
   ],
   "source": [
    "x_train_one_hot, y_train_one_hot = dataset_to_one_hot(\n",
    "    x_train_encoded,\n",
    "    y_train_encoded,\n",
    "    vocabulary\n",
    ")\n",
    "\n",
    "print('x_train_one_hot:\\n', np.array(x_train_one_hot[:1]))\n",
    "print()\n",
    "print('y_train_one_hot:\\n', np.array(y_train_one_hot[:1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we may combine all the function together and create a one function that will do all the work to generate a dataset in the proper format for us."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Generates a dataset.\n",
    "def generate_dataset(dataset_size, sequence_length, max_num, vocabulary):\n",
    "    # Generate integet sum sequences.\n",
    "    x, y = generate_sums(dataset_size, sequence_length, max_num)\n",
    "    # Convert integer sum sequences into strings.\n",
    "    x, y = dataset_to_strings(x, y, max_num)\n",
    "    # Encode each character to a char indices.\n",
    "    x, y = dataset_to_indices(x, y, vocabulary)\n",
    "    # Encode each index into one-hot vector.\n",
    "    x, y = dataset_to_one_hot(x, y, vocabulary)\n",
    "    # Return the data.\n",
    "    return np.array(x), np.array(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x:\n",
      " [[[0 0 0 0 0 0 0 0 0 1 0 0]\n",
      "  [0 0 0 1 0 0 0 0 0 0 0 0]\n",
      "  [0 0 0 0 0 0 0 0 0 0 1 0]\n",
      "  [0 0 0 0 0 0 0 0 0 1 0 0]\n",
      "  [0 0 0 0 1 0 0 0 0 0 0 0]\n",
      "  [0 0 0 0 0 0 0 0 0 0 0 1]\n",
      "  [0 0 0 0 0 0 0 0 0 0 0 1]]]\n",
      "\n",
      "y:\n",
      " [[[0 1 0 0 0 0 0 0 0 0 0 0]\n",
      "  [0 0 0 0 0 0 0 0 1 0 0 0]\n",
      "  [0 0 0 0 0 0 0 1 0 0 0 0]]]\n"
     ]
    }
   ],
   "source": [
    "x, y = generate_dataset(\n",
    "    dataset_size,\n",
    "    sequence_length,\n",
    "    max_num,\n",
    "    vocabulary\n",
    ")\n",
    "\n",
    "print('x:\\n', x[:1])\n",
    "print()\n",
    "print('y:\\n', y[:1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x.shape:  (5000, 7, 12)\n",
      "y.shape:  (5000, 3, 12)\n"
     ]
    }
   ],
   "source": [
    "print('x.shape: ', x.shape) # (input_sequences_num, input_sequence_length, supported_symbols_num)\n",
    "print('y.shape: ', y.shape) # (output_sequences_num, output_sequence_length, supported_symbols_num)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "input_sequence_length:  7\n",
      "output_sequence_length:  3\n",
      "supported_symbols_num:  12\n",
      "vocabulary_size:  12\n"
     ]
    }
   ],
   "source": [
    "# How many characters each summation expression has.\n",
    "input_sequence_length = x.shape[1]\n",
    "\n",
    "# How many characters the output sequence of the RNN has.\n",
    "output_sequence_length = y.shape[1]\n",
    "\n",
    "# The length of one-hot vector for each character in the input (should be the same as vocabulary_size).\n",
    "supported_symbols_num = x.shape[2]\n",
    "\n",
    "# The number of different characters our RNN network could work with (i.e. it understands only digits, \"+\" and \" \").\n",
    "vocabulary_size = len(vocabulary)\n",
    "\n",
    "print('input_sequence_length: ', input_sequence_length)\n",
    "print('output_sequence_length: ', output_sequence_length)\n",
    "print('supported_symbols_num: ', supported_symbols_num)\n",
    "print('vocabulary_size: ', vocabulary_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Converts a sequence (array) of one-hot encoded vectors back into the string based on the provided vocabulary.\n",
    "def decode(sequence, vocabulary):\n",
    "    index_to_char = {index: char for index, char in enumerate(vocabulary)}\n",
    "    strings = []\n",
    "    for char_vector in sequence:\n",
    "        char = index_to_char[np.argmax(char_vector)]\n",
    "        strings.append(char)\n",
    "    return ''.join(strings)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'187'"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "decode(y[0], vocabulary)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Build a model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will use a [Sequential] TensorFlow model with [LSTM](https://www.tensorflow.org/api_docs/python/tf/keras/layers/LSTM) layers. Logically our model will consist of **encoder** and **decoder**. _Encoder_ will encode the input expression into an array of numbers. And then _decoder_ will try to build an output result sequence by decoding the array of numbers from encoder."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "epochs_num = 200\n",
    "batch_size = 128"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = tf.keras.models.Sequential()\n",
    "\n",
    "# Encoder\n",
    "# -------\n",
    "\n",
    "model.add(tf.keras.layers.LSTM(\n",
    "    units=128,\n",
    "    input_shape=(input_sequence_length, vocabulary_size),\n",
    "    recurrent_initializer=tf.keras.initializers.GlorotNormal()\n",
    "))\n",
    "\n",
    "# Decoder\n",
    "# -------\n",
    "\n",
    "# We need this layer to match the encoder output shape with decoder input shape.\n",
    "# Encoder outputs ONE vector of numbers but for decoder we need have output_sequence_length vectors.\n",
    "model.add(tf.keras.layers.RepeatVector(\n",
    "    n=output_sequence_length,\n",
    "))\n",
    "\n",
    "model.add(tf.keras.layers.LSTM(\n",
    "    units=128,\n",
    "    return_sequences=True,\n",
    "    recurrent_initializer=tf.keras.initializers.GlorotNormal()\n",
    "))\n",
    "\n",
    "model.add(tf.keras.layers.TimeDistributed(\n",
    "    layer=tf.keras.layers.Dense(\n",
    "        units=vocabulary_size,\n",
    "    )\n",
    "))\n",
    "\n",
    "model.add(tf.keras.layers.Activation(\n",
    "    activation='softmax'\n",
    "))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "lstm (LSTM)                  (None, 128)               72192     \n",
      "_________________________________________________________________\n",
      "repeat_vector (RepeatVector) (None, 3, 128)            0         \n",
      "_________________________________________________________________\n",
      "lstm_1 (LSTM)                (None, 3, 128)            131584    \n",
      "_________________________________________________________________\n",
      "time_distributed (TimeDistri (None, 3, 12)             1548      \n",
      "_________________________________________________________________\n",
      "activation (Activation)      (None, 3, 12)             0         \n",
      "=================================================================\n",
      "Total params: 205,324\n",
      "Trainable params: 205,324\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAJjCAYAAADnFaCGAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAACPaADAAQAAAABAAACYwAAAAD+JrCNAABAAElEQVR4AeydB7gdVdWGdySRIqA0adKbFElAaUYhAiIgRUFKpIUmSAlSVHqVJqIggoAISu8CoiAqRYpSpbdIDxBEkaogZf71Lv99MmdOm3PvnP6t57n3zOzZs2fPOyeZdfdqI5IkuThIREAEREAEREAERKC/Cbw6wpSepL/vUXcnAiIgAiIgAiIgAmHKhwRBBERABERABERABAaBgJSeQXjKukcREAEREAEREIEgpUdfAhEQAREQAREQgYEgMHIg7rLHbvI3v/lN+Pe//91js9Z0RUAEREAEIoFZZ501rLHGGnFXn11CQI7MXfIg0tOYb775wuTJk9NN2hYBERABEeghAp/5zGfCnXfe2UMzHoipTtFKT5c+5+OPPz7stddeXTo7TUsEWk/g4x//eDjkkEPCrrvu2vqL9fAVvvKVr4QZZ5wxnHvuuT18F/019e985zvhhhtu6K+b6pO7kU9PnzxI3YYIiIAIiIAIiEB9AlJ66vPRUREQAREQAREQgT4hIKWnTx6kbkMEREAEREAERKA+ASk99fnoqAiIgAiIgAiIQJ8QkNLTJw9StyECIiACIiACIlCfgJSe+nx0VAREQAREQAREoE8IKGS9Tx6kbkMERKCSwFVXXRUmTpwYTj/99LDWWmtVdhjQln322Se8++67fvcjRowIBx10UJhtttnKaHzve98LX/va18InP/lJb7/00kvD2WefHf75z3+G1VdfPWy66abhU5/6VNk59Xb+9re/hZNOOqlqlw9/+MPhuOOOq3qsXiP1si+77LIwadKksN9++1V0ff3118OJJ54Y/vSnP4VpppkmrLbaap4KZNppp/W+p5xySphlllnC+PHjy879/e9/H66++upSGzl3ttpqq9K+NnqXgJSe3n12mrkIiEADAk899VR45plnAp+dFF7OKBfdIieffHJYeOGFXWH42Mc+Fj760Y+Wpvbf//43fOMb3wgrr7xySeH52c9+Fi6++GJXHlFe9txzz4BSdPnll4evfvWrpXPrbXDNH//4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7l4EREAEREAEBoaAlJ6BedS6UREQAREQAREYbAJSegb7+evuRUAEREAERGBgCEjpGZhHrRsVAREQAREQgcEmIKVnsJ+/7l4EREAEREAEBoaAlJ6BedS6UREQAREQAREYbAJSegb7+evuRUAEREAERGBgCEjpGZhHrRsVAREQAREQgcEmIKVnsJ+/7l4EREAEREAEBoaAlJ6BedS6UREQAREQAREYbAIjEpPBRqC7FwERaBWBt99+O8w777zh9ddfL7vE+++/H6aZZpqytgUWWCBMmjQpjBgxoqxdOyIgAiJQEIEpWukpiKSGEQERqCQw3XTThXXWWSd88MEH4b333iv98LdWeh8laKONNpLCU4lQLSIgAgUSkNJTIEwNJQIiUElgiy22cKWn8sjUFpSg8ePHT23QlgiIgAi0gIDMWy2AqiFFQASmEmBFZ/bZZw+vvfba1MbM1sILLxyeeOKJTKt2RUAERKBQAjJvFYpTg4mACFQQGDlypK/ijBo1quIYDRzfZpttqh5TowiIgAgUSUDmrSJpaiwREIGqBDBxvfvuu1WPsRIk01ZVNGoUAREomIDMWwUD1XAiIAKVBPDZmWeeecKUKVMqDo4ePTrce++9Fe1qEAEREIGCCci8VTBQDScCIlCFAGHoW2+9dciauAhbl2mrCjA1iYAItISAVnpaglWDioAIZAncd999YcyYMWXNKEOTJ0/2VaCyA9oRAREQgeIJaKWneKYaUQREoBoBzFiLLLJI6RAKz9ixY6XwlIhoQwREoNUE5MjcasIaXwREoERgwoQJHq1FA0qPTFslNNoQARFoAwGZt9oAWZcQARH4HwFy8Sy66KK+gz/Pyy+/HGaZZRbhEQEREIF2EJB5qx2UdQ0REIH/EcC8Ff161l57bSk8+mKIgAi0lcDItl5NF+trAvzVfuONN/b1Permhk8ghqiz4nPJJZcMf0CN0NcEUI5nmmmmvr5H3Vz7CMi81T7WfX+lm266KYwbN67v71M3KAIi0D4Cjz76aFhiiSXad0FdqZ8JyLzVz0+3U/f297//PZCMTj+9x+Dpp5/2r83tt9/e0ud35plntnT8dnz3SLZ4wgkn9Px9tIPVUK5x//33d+q/MF23jwkoequPH65uTQS6lcC2227brVPTvERABPqYgJSePn64ujUREAEREAEREIGpBKT0TGWhLREQAREQAREQgT4mIKWnjx+ubk0EREAEREAERGAqASk9U1loSwREQAREQAREoI8JSOnp44erWxMBERABERABEZhKQMkJp7LQlgiIQAEECE9eY401wvTTTx9+85vfFDBi/w3xt7/9LZxzzjnhsMMO85sjzcORRx4Z7rnnnvDxj388bLLJJmH99dcPH/nIR3Lf/EknnRQYt5pssMEG/kyqHavX9vzzz4djjjkm7LXXXmGhhRaq6PqnP/0pnHbaaeGZZ57xYrK77bZbWGGFFbzfv//97/CNb3wj/OhHPwpzzDFHxblqEIGOELD/oCQiUAgBy8ac2Jc4sf/ACxlPg7SfgOXp8WdoeXqGfPH33nsvmX322RPLY5O8//77Qx6niBM/+OCDIoapOgb3Z3l6qh6r13jLLbcka665ZjJlyhTv9tZbbyWWfC+58MILE1Mykv3228+fwWc+85nkv//9b72hSsdeeuml5MMf/rCfx7/B7M+VV15Z6ptng7ntscceyXTTTedjWc6citMs15Ifm2+++RKro+bbfP7ud78r9eW6Cy+8cPLUU0+V2vJucE3uw5IT5j1F/USgEYEXZd6yf1USERCB4ghQSHTSpEnhkUceCR/6UOf+izGFx1c3TPEq7uaGOdK1114bNttss3DWWWeFOeec00f7wx/+4LyWXnrpQMLDo446youy3nXXXeHOO+/MdUXG23jjjcNjjz0W3nnnndLPcccdF2acccaw1lpr5RondnrhhRfCN7/5zbDyyivHprLPV199NZhyFsjC/uyzzwZTasJXvvKVAGvao7DCxP6XvvSl8MYbb8RmfYpAxwh07n+kjt2yLiwCItBqAh/72MfCzDPP3OrL1B1///33DzfccINnTK7bsU0HbdUm7LrrrmGnnXYKn/jEJ0pXtVWxgIJmqyKltuWXX963US7yyAILLBDIcr344osHW/Ep/Vx11VXhy1/+crAVmzzDlPost9xyXvrBVnFKbemNyy+/3E1eq666qjfT76CDDvLtBx98MN01TJgwwZWhH/zgB2Xt2hGBThCQ0tMJ6rqmCPQxgf/85z/h0ksvDV/96lf9Zcet8vI+99xzw0YbbRSee+65gP8Jqw/bbbddMFOK03j99de9z4YbbhieeOKJcOihh4axY8e6f0ssSXDbbbeFLbbYImy++ebhsssu8/PwOWGfH44jKDzHHnusb2+/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XDBZZ511ko9+9KOJJTJMTKEs9WHDIvkSqzmXmHJU1t7sjkLWmyWm/jkIvMgysEQECiEgpacQjB0dZChKT5ywVatP+A7wIq8lZo4p5Zohv46Zlsq68qLk/PQLMyo9L774YmIh8gnXqSW2YlR6CduKUEW3auPTr1rfipMzDUUoPQxpkWgJylw1QaGYPHlytUPeBhPy/KDUtUPg99RTTyVW+bzi2XF95mNpABKL7Br2dKT0DBuhBqgkoDw99leNRAREoAACZPFdbbXVvF5UreEwccVcM/jhENqcFkwoOMlmo8HoQxtV67lOLbEVopLvDqHTWak2Pv2q9c2e26p96lXZSkyoVroBP6ToFJ69PqY5zrWVMj8/e7wV+/CzlR4vbZF9dpgTCWHHJLfhhhu24vIaUwSGTUA+PcNGqAFEQARa/3I3tQAAQABJREFUSSD6oURn2lZeqxNjo3Dhs4MvE+Ub8gqJDdddd92KMhJ5zy+yH47gFCo186bXEitybI0lAkUSGFnkYBpLBERABIoiYKYUd1SOkWA4KVMnihdrv4n5x3jiPzPp5L41oq2yma5zn1xwR1btyJhtpraCR9ZwIlAsASk9xfLUaCIgAgURwORD6QN+opjTb9zsu09MWaNHj+7J++JZSeHpyUc3cJOW0jNwj1w3LAK9Q8CiqnpnspqpCIhA1xOQT0/XPyJNUAREQAREQAREoAgCUnqKoKgxREAEREAEREAEup6AzFtd/4h6b4I4nE477bS9N3HNOJDtGNl///3DrLPOKiJ1CLzyyiueofjWW2+t00uHhkpgKMVkh3otnTc4BEaQu2dwbld32koCDz/8cDj00ENbeQmN3QcEqBdFRBZ1ufrZMbkPHlVX3AKO7LGESFdMSJPoZQJTpPT08uPT3EWgBwnccccdgUKl1NsimaBEBERABNpEYIp8etpEWpcRAREQAREQARHoLAEpPZ3lr6uLgAiIgAiIgAi0iYCUnjaB1mVEQAREQAREQAQ6S0BKT2f56+oiIAIiIAIiIAJtIiClp02gdRkREAEREAEREIHOEpDS01n+uroIiIAIiIAIiECbCEjpaRNoXUYEREAEREAERKCzBKT0dJa/ri4CIiACIiACItAmAlJ62gRalxEBERABERABEegsASk9neWvq4uACIiACIiACLSJgJSeNoHWZURABERABERABDpLQEpPZ/nr6iIgAiIgAiIgAm0iIKWnTaB1GREQAREQAREQgc4SkNLTWf66ugiIgAiIgAiIQJsISOlpE2hdRgREQAREQAREoLMEpPR0lr+uLgIiIAIiIAIi0CYCUnraBFqXEQEREAEREAER6CwBKT2d5a+ri4AIiIAIiIAItImAlJ42gdZlREAEREAEREAEOktASk9n+evqIiACIiACIiACbSIgpadNoHUZERABERABERCBzhKQ0tNZ/rq6CIiACIiACIhAmwhI6WkTaF1GBERABERABESgswSk9HSWv64uAiIgAiIgAiLQJgJSetoEWpcRAREQAREQARHoLAEpPZ3lr6uLgAiIgAiIgAi0iYCUnjaB1mVEQAREQAREQAQ6S0BKT2f56+oiIAIiIAIiIAJtIiClp02gdRkREAEREAEREIHOEpDS01n+uroIiIAIiIAIiECbCEjpaRNoXUYEREAEREAERKCzBKT0dJa/ri4CIiACIiACItAmAlJ62gRalxEBERABERABEegsgRGJSWenoKuLgAj0K4G33347zDvvvOH1118vu8X3338/TDPNNGVtCyywQJg0aVIYMWJEWbt2REAERKAgAlO00lMQSQ0jAiJQSWC66aYL66yzTvjggw/Ce++9V/rhb630PkrQRhttJIWnEqFaREAECiQgpadAmBpKBESgksAWW2zhSk/lkaktKEHjx4+f2qAtERABEWgBAZm3WgBVQ4qACEwlwIrO7LPPHl577bWpjZmthRdeODzxxBOZVu2KgAiIQKEEZN4qFKcGEwERqCAwcuRIX8UZNWpUxTEaOL7NNttUPaZGERABESiSgMxbRdLUWCIgAlUJYOJ69913qx5jJUimrapo1CgCIlAwAZm3Cgaq4URABCoJ4LMzzzzzhClTplQcHD16dLj33nsr2tUgAiIgAgUTkHmrYKAaTgREoAoBwtC33nrrkDVxEbYu01YVYGoSARFoCQGt9LQEqwYVARHIErjvvvvCmDFjyppRhiZPnuyrQGUHtCMCIiACxRPQSk/xTDWiCIhANQKYsRZZZJHSIRSesWPHSuEpEdGGCIhAqwnIkbnVhDW+CIhAicCECRM8WosGlB6ZtkpotCECItAGAjJvtQGyLiECIvA/AuTiWXTRRX0Hf56XX345zDLLLMIjAiIgAu0gIPNWOyjrGiIgAv8jgHkr+vWsvfbaUnj0xRABEWgrgZFtvVqfX+ySSy7p8zvU7YnA8AnEEHVWfPRvZvg8NUJ/E6B+3frrr9/fN9nGu5N5q0DY+ChIREAEREAERKAoAnPNNVd48cUXixpu0MeReavob8DFF18cSMSmHzHQd6D2d+DMM8/syL+RL3/5y+48rWdT+9nA5sgjjwyLLbZYR56Rns3UZ/PjH/+46FfUwI+n6K2B/woIgAi0n8C2227b/ovqiiIgAgNPQErPwH8FBEAEREAEREAEBoOAlJ7BeM66SxEQAREQAREYeAJSegb+KyAAIiACIiACIjAYBKT0DMZz1l2KgAiIgAiIwMATkNIz8F8BARABERABERCBwSAgpWcwnrPuUgREoCACV111VVhwwQXDddddV9CIgznM3/72t3DIIYeUbv7SSy8NG2ywgRehPeigg8IDDzxQOtbsBmHvjHf00UdXPfVPf/pT2GKLLcLnPvc5T2Fw5513VvR78803w1FHHRXWW289Tw74i1/8Irz22mulfqecckq44IILSvva6A0CUnp64zlpliIgAl1C4KmnngrPPPNM4LOTwou9V+XWW28N3/zmN8Muu+zit/Czn/0snHbaaeHEE08Mhx56aPjVr34Vll12Wf9s9h6vvPLKsNxyy4VNNtkk3HXXXRWnn3XWWWG11VYLN998c/jLX/4Szj777LDKKquUKbGw/dKXvhRQjk444QSf0znnnBM++clPhr///e8+JsVzf/7znwcUNEnvEJDS0zvPSjMVARHoAgJ77LGHKz077bRTx2bzwQcfhDXWWCO8//77HZvDUC987bXXhs022yygfMw555w+zE9/+lOvw7bQQguFL37xi2G//fYrtTdzHbh8+MMfDt/73veqnvbqq6/62DfddFN49tlnXXH9yle+4hzjNTmRJLO33XZb2Hfffb1A7qc//WlXfKZMmRIuu+wyH3uGGWYIV199dbjwwgvD6aefXvV6auw+AlJ6uu+ZaEYiIAJdTmD++efv6Az333//cMMNN3jG5I5OpMmL//e//w277rprQGH8xCc+UTp79tlndwXivffe87bll1/eP1FSmpEPfehDYZ111glLLbVU1dMuv/zysNdee4VVV13Vj88333yllZoHH3ywdM5LL73k23/+859Lbf/+9799e+TIqSUrqYt1wAEHhO9+97vhlVdeKfXVRvcSkNLTvc9GMxMBEehCAo8++qi/KDHJILyYzz333LDRRhuF5557Lpx00klhrbXWCtttt11gZSDKX//6V185oLQAfkFf//rXw2c/+1n3G4krNnvvvXfYfPPNw/jx4/20xx57zH1PaNttt928DYXn2GOP9e3tt9/eX7rxGpiLdthhh7jbdZ+s6GAW3Gqrrcrmhv/NPffcE6JCwX0jrGYVKZisJk6cWDYkCtZss80WqHEVZeONNw4oUMcdd1y4/vrrA8rYT37yE1fUOJaWLbfc0uddy38o3VfbXUDAbJeSggjY40xsWbSg0TSMCIhA0QSs9layzTbbDHnY8847L/nUpz6FM01if+H7OFanKplxxhm9zXw+EnspJqbM+L45wXqfG2+8MbGXq7fNMsssyZgxYxJTihK2Gcv8W7zfu+++m9gL2NviJE2RSuwFnNiqhDeZH0qyxBJLeB9b7UnYR954443ElAbv+89//tPbhvqLe7LaW0M9veZ5tgKTLLnkkjWPxwNm/kpMCUls9SQ2NfX5xBNPOB9TRBueZ0prYsWik2984xtlfc2M6WPAlHmb2S3hWVSTddddN5l++ukTU46qHR5ymynIzmHIA+jELIEXtdLTBYqnpiACItAbBFidiassccasvOAXguADwqoFjrof//jH3RGWdhxnf/jDH7LpphdWNXCCxZEWEwk+IZMnT/YVAwp9pgUzEOafKCuttFKYaaaZgr2ow7hx4wL7iCle4Zprrgm/+c1vwqyzzhq7d80nqyWTJk0Kc889d9054SiMI/PJJ5/sfj51OxdwkNWnmWeeuSySjGFxYP7qV7/qqzwPP/xw+MhHPhI+9rGPVb3i0ksvHf7zn/8EU7aqHldj9xCQ0tM9z0IzEQER6AEC0047bcUs7a98byO6Jwp+Ja+//np45513vImXJkJUEgoLsvjii4dNN93UHWnTPiV+sMGvOEa625prrhnWXnvtdFPXbBOibitZDZUeoqkIE8dc2GrBmRkTFo7L88wzT9nliNb64x//GA4++GBXdq644gqP6Iq+PenOH/3oR333kUceSTdruwsJSOnpwoeiKYmACPQ+gWmmmSbXTSy88MLer1mn3WpKT64LdqhTVBaIrqon+NBkV9Pq9R/qsbfeesvzAuGLgw9WWnBk3nbbbcPhhx8eDjvsMPc3QqElootorawQyYWYWTF7SPtdRkBKT5c9EE1HBERgsAjE1YGsWasRhV5Terg/5kzSv3qCWXDRRRet12XYx3AcJzkhDuLmy1MxHkkH6WM+YH6MUHrz5/LtSy65pKL/P/7xD28jGkzS3QSk9HT389HsREAE+pyAOTkHQuDNQdrvNEYwYRpDzBPTX8DkoImC8sBLOYZ4x3ZCwqM5LbZ1yyd+SAsssIBHuNWb05lnnlnzcGRSs0OOA/BE0cH8iA9WFExvMffS888/781PP/10PBxilNe//vWvUlvcePHFF32z1cpavJ4+h05ASs/Q2elMERCBASQQX7z4g0SJoenpMgVkbUayJg/MN3G1g1UDTCkk04tmn2hqIfQcp2QyC/OifeGFFzzUHeUH/xNe3jhDoyTgaMtLGx8hVhvS84hz7IZPyj7guxRD9LNzOuaYY9ypGIfsrBDqb9FuIRsynu3Hfnw2WfYc22effZwZ6QUIneeHZIn4WuHQjFAOg5B1Sk/EueJ8znj0zQqrdcsss0xgRUjS5QSy8VzaHzoBe9QKWR86Pp0pAi0nMNyQdcvVkpgPjocy2wsy+c53vpOY/4mHK/Pvf/To0cntt9/u4c/s82MRVomZPxKr7+T7hJ4zhpU+8PB0ix4qu2/ComNYPH0tsiv5zGc+k1hCvcQiwDwsmtB5W+3xH0u2l5gilNgKj4c3W4RRYkpS2ZjN7rQqZP3JJ59MLFqt5v+TMUzc8h5VTJk5Raa2ElNxPDZYokAPt6cvjLbeeutSWL/lViqNEcdKf1p+oDhMcv755yemXCYLLrhgYgkPE3NWTqzkhLMudbINi0jzMU1BSjcXsq2Q9UIwpgd5kb8WJAUR4B+P8vQUBFPDiEALCAxX6RnOlKLSQ04eW4lJeMHaKkLNIW2lqPSCNafbin4vv/xyYisPZe30q9a3rFOOnVYpPVz6wAMPTFZcccWqs0B5s9D9qsdoNDOS5/kpOh9OrQvyfCyZYmIJKRMzHVbthtKJAovSWbRI6SmaaKI8PaaoSERABESgrQQwo2CKwoRSS/DzwXcHidFB6b7k7snm46Fftb7p8zq9TY0rItt+8IMfVEyF+5133nkr2mnAfMe5O++8s59ftVPBjTwfW+kJlgwyjBo1qmJ0zIuY4n7961+XzJMVndTQVQSmFhHpqmlpMiLQvQSox1MtbBWfDMJaV1555UCysl4R/EGocJ2WOeaYI9hf5KUmqk3HQos0msnGE7eVOmijIYHoXxKdZBue0KcdUMpQFEj8h5JD6Y08QmJDy3zsPk55+re6DwkU+XdDAVXKWEh6g4CUnt54Th2dpS0wlv7i7OhEaly83fMz/wpPOkdhQ66NY+UXvvCFQL2gQw45JPBSoxI3uUaqJbKrcRttbU4zQ1HDeZZkcET/kF04mycFB1QcaakJRVZiKmEXIel5FDFet47Bi3HPPff06f3+97/3HDAwJjx7EIVkfiT+u//++3PfPtFW/HSLWDkNz7xdbQWoW+aoeVQSqL22WtlXLQNIgP+YDj300K69cyJZKEoYIyzaMVH+k6NwIeYJhHwfVI4musT8Njzj7Iknnhguuuiidkyn6WtkmbGETz6SmK+EqCNKI6SFPvw1y8uKe6PkwXCl279bw72/9PmsjLFCGKOwfvSjHw2swhO5sMpjjt9xt+c++WNBCk/PPbYgpaf3nlnbZszLj7/q26lQNHtz1D2yoou+4tLsucPtT96RrFBXaPXVV/fm3/3ud9nDXbFfi9m3v/1tr/1ENfCbb765Yq5UEie8N10HqqJTzoZe+G7lvJVc3VAiqduU/sl1ojqJgAgUSkBKT6E48w9GUrGrr77a7dq8AMgdQc0cig4iFpnhPhXUoMGkwPJ4FF5KJNViZeGqq65yxcSqOoejjjqqQkGhXsyECRMCphirCl2Wv4O/Oil0yErFCius4KsVMX8IhfM+//nPB4r/MYZVhPZVjDiHep+kdcdez49VtC7lJIntzCdKvfukD+aW73//+2H99df3e2CVgTkhvLyjGWb77bf3+/MD9otCjrvttlugFhHp5LOrLjA/4ogjvO4OygnsGRvZZZddAjlShirRZyPm/EiPU+t5kPsFpWLDDTf0ooWsro0dO9b9F7ImgEbM6j3XesxwnP3a177m0z3++OPT0w5Wwdt9enbccUdvbzQHOt1xxx2+emSh1s70D3/4g59b77v19ttvu4Mr82D1CcdVzGpRGv27if30KQIiIAJVCZhNXVIQAQOcO2TdVlBK+SIs02dimUp9//LLL0/IZbHIIoskp556amLVmj3PB2NbpEBi2VsT+rNvibqSMWPGJKaQ+DZthMNGITTUqjsnt9xyS0J+CluKTSwKIbEaON7FTDSez4JQzIceeigh74j9Je/HLNlaYkqUX8eUlMRWUxLa8gjhpISkMp+zzjqrdIq92D1vhilt3lbvPulAWC/5SSxLasK5ppz4mKbI+Pmm2Pj9cB3mxz5yyimnJOZUnFjStsQyqnouFfpYkjc/bmaVhPwntNkStedMgQ05VuzlnlhG3MTMORXhwH5y6hdzYwyeWRSrzJxYZIpfn1DXtNR7HhMnTvT8JYxnCc4SU3Q9Lwv7VqjSvxOM1YgZfeo911rMOA8xRcXvift//PHH/9dov/nuxTDjPHMgZ4lVB09sxSix6tOl7zDfxVrfLcKvyU9jK2WJKXr+vTVFLCHvDOch9f7deIcGvzoZst5gal11uJUh6111o10+GYWsF/6AlKenSKS8oJrJ04NCwjm2wuD5OsjjQV4IWyFJbOWiNDXzBfB+ZjrxNhQfzrOVgFIeD3J+kPSLFy7JzVAs2LbMpKVxeBlynkUcuOJjTraJ+cOUjvMStzTqpX1bifL+VnCv1JZ3g5cd1yKpV5Qrr7zSX8hxv9F9futb3/J7Sucd4cULBzghzNl8A+KQiVVy9nNQBNNCYjfmE5UwlCT2ST7GSxlm/CDmaJpYdEn69KrbUekhR4c5AidzzjmnM4dzVMDiiY2eB/3M78PnhHIXhftgnih+SCNmKLSNnmuWWbxW/LQVPr+mrXjFpoQ2kuQhjeZAnhXz+UmsOnXpfL5LKFInn3yyt1X7btnqmj9LW4UrnWfZi30uVreplAel1r+b0kl1NmxFz8eDqX7qM+APATGqz6gdfCwtQZ1vtA41SeDFkfbQJB0iQCp5hGgZHEXtZeRmBEIhsf3fe++9fhyfGlv58T4s/9tf/t5O2nScARGcajfddNNw9tlne5p3TAmcZy8oP84vUx58HFLUTz/99MFWd3wsTCvnnHNOICSU8bMSr5Ftr7dPtA9OipiOMCVRc+eMM87wHBuch7mk3n2aIhJsdcr9Y9J5R2zly+sNwStKen6Yj7gHwsbTgvmKsGtblXFzX2RvCoo77dqqRKk7JrFmBEdqUutTTgDnRlN8S+ns4ziYruo9D/rF52qrd/E0N3FSZoDvQiNm3Hfe55pmVrrY/28QQoxPj63WeJVpzGVc/7e//W2uOVgmWzdpYpqNgqmK713WATrOw/7jchMkPlGY2aJgYoUL300YU/8oPrv0v5vYv9En3xtTmtyU26jvIB/n34n9ceUm9EHm0Ol7J7SfUiSS4ghI6SmOZdMjxRc3ibqimEnBNy3debBMn7E516eltvd+r776qodP41Ny11131TyXcFl8R4iiIZyWF3ZUtNInxRdTui3PNhFNRAShvOAnc99994X4Imx0nxT6Q0lD+UsLxRhjQcbYnp6frfR4c2Qb+6CEIfG68Xiafezb7CcvYitH4H5RlrnVfaRsVass8Rzh7I2eR7XroiwyV55pnHuj70ae55pmlr0u/lNUxEbRMBOrK5Eo1Cgsd999t3evNweUaYQ6SWnJKjwci/PATwuljuiwtPCsV1pppUC9Ku4f1sN5dlxvQUs2Rz0rSW0CPHuetTjVZtSOI9R0Q/GRFEdg6p/LxY2pkYZBIK5qEPqcFTNd+GpCtj3uU/QO4YXFOKzg8LLNivma+KoDLzIcpHmh4HAcCx5m+8cXU7a90T4O0igtrFTgMM01osLS6D5ZFUD4B08m1rSwCoSDc5T0/Eiqh5gPSDzsnzHLq5mgytqL2iGSi+R9rErgoI5SkJZGzyPdN73Ni54Q8/hMOVbvu8FqUp7nmmaWvh7bKBUxpwzO8qzQRQfmRs+N1a74PWLVLSvxucb2OA8UJL4bOPKzMpiWVj+79LW0LQIi0N8EpPR02fPFjMVfxFRfJkorCi8+K5xXqh4c29OfLEdjGjBn0BBNJERsYTqIcttttwUryOdmHhQekszFVPasrKT7xheS1ZSJpzf1yQvSnKCD1ctxM0k6IqrRfaLUkBcG0wrmkii81FGmYoQUc6SNqB6EVQEEU1Za4ooXUW6NhGvnuWeeCRI/ycLMqhZCJB1mriiNnkfsl/003yNvwjzUiBmVpTFL5HmuaWbZa7KPggp/VmBQJCPXPHPg+4dgao3RgOzfdNNNpSzP2e8WilJkVO3ZYbaLxxlLIgIiIAJDItCkE5C61yFgD6ApR2acXznH/pMvG9XCir3dVg8Sy/CbWPhwYi/rxMLavR8Oz5xHJBbRRggO1LTZi8b3qerM+bQR7UQlZyK7iBLD0dRejH4M51scjC002PfpTzQS0TM437L/6U9/2itEM49mBQdre8Ellj6+4tRG90nkAtfHIdvCzhPLI+Pz/973vlcay0K8vQ+RbkQYEYXG/XKerbyU+nG+5ZdJXnnlFW8z5c/7ECmUFiLZYGQv+sRMSulDFds4QXOdrKP37rvv7u2m9CU4oSONngd9iCxiPCLtEFMYPGKKCDPmhTRilue5VmPmg2d+mcLs88HRPi2N5sC8Y3ScZdD1ApNm1kxsxaYUEVftu8W/A74rlj7Bncu5JtF3tB1++OGlKdT6d1PqUGdD0Vt14KQOKXorBaODm4reKhy+oreKRMoLK0/0lv2VnWy++eYeQs45RKaYCaE0FV5wRG+ZmcFfOvynb74xpVDzqPTwYjE/Hq/wa3+Vu2JTGsQ2eLHHFzPX4WVONAzCHHgBcA1eRoSn83Jj3xyk/WVD1WC2OZfQ4QceeMDPbfYXLykUq6w0uk/maLl9EpQH5mB/7fvLz1ZWSkOdd955/lKEEdWOOWarQ86X/ttss42Hf9sqTGI1pvw8y23koeqMiUJlOWESW9HwY9zzXHPN5WHSjFNNSCNA5Bzn82Mrc4mVcCh15b6I6OIYc0dZQ+o9D45HpQfmRKkR8k3UVDpVQB5mjZ5rNWZcPytUtDYfm5KiGI83mgP9qEod0xbAgTQLtEWp9d3i2aBw2qpOYiY2jyY0vzP/vjb6dxPHrvcppacenanHpPRMZdHJLSk9hdOX0lMkUv5zz6P05L0mqzj8RUyOmrREpYeVG/ORSFhN4YVQTVACzCnRQ7nTykLsy/lpye4zLnlZao2fPrfWNvlXql079q91n/G4+fT4/HnZVhNLlFdaQUgfZ3XFTH6lHDfpY/W2CZHnpxVS73lEpQdlwxL4+epQrTk0YpZ9jtn9Wsyy1+PZ15JGc+A8lMm00pYeq9Z3izxPKNgoiawaFSlSevLRlNKTj1Ore0npKZywQtZNUelawbenkR8DEUH81BJbAQmWe6fW4Ypzs2Ph1GrJ8vx8MhhXc05ND875N/y/H0psjz5DcT/72eg+cXDFl6SW1CqLgE8K4cnNCr5IrZJGz4PrwjxG4tWaRyNm2eeY3a/FLHu9+Oyz7ew3mgN9omM521lJf7fSx4ioW2aZZdJN2u4xAmaC9uzeRIQil156qft4UWneTMrubB99v/LeGoEZxxxzjAde8P2lRA4pOfD3GorY69SDD4hUI/N3VrgeWdrxMeM7yf8lRNRmiwiTRgNfPvsDwX3fNttsM08/wniWKNWjGMmqL+kOAgpZ747n0NQs+I8Dic68TZ08jM72V7KHtdcbYqj/AdUbc1COpZ/roFbf7vdnzYsWxbdV0urxG83bVmM9TQV5sqLCg0KAUz8RnKSUIDIQpQin+3QesUZjU5qEEiaMjbM++WuIkjR/r0anVhwnpYT5S3oaDTNNVxy3VcxA0AOpM4jIxKGfnGP8EO2Kwo6wb/6KXkKGoBByj+H0z9iWnNMDOTbYYINgpnUve1NxITW0n0Dhi0cDPKA9vULNW9VQkikYx1auhc+KRUclFiZcravaeoQA5hx8j2xFy58r/i+UcZAUT6CT5i3MeV/4whcSnncrpMjxh2Le4r4IDLDo0LLbW2655UolYDhgiTr9e25KQlm/ejsXXHBBwpyimZ1M8/x7sT8O6prOq43JGJZoM/n1r3/t80j748X+3AMlT8jWzn3ZCnfJBxO/syj8X2wrQHHXP2HAvKIwBpnuyYTfrMi81Syxhv1l3mq/mjm8K44bNy5YRFDZINkEfmUHtdP1BFg6t5pd/hMnS1VuSX8RsKg3N/3af8stubFWj99o0mTwJoeUKRNlXTFFkbvKlAfPxUSCSYSEm3mFPFjcXxQL4ggWLOCpJZpdOWOVhgLMmKOqCc+HhK2Y6eO/QwoBk9WdezN/My+ATD9WgEggSA61aBZnO64EMT5jkDqEFS5WqxqZ+6vNSW3FEfjfGl1x42mkFhPgHxBKTvqnxZfU8G0gkH6ebMf/bNtwaV2iAQHKe/zgBz/wFxYm3nTld3O29rxRFo3p/iEMhd8J+/xwHOGFfeyxx/q2RWb6SxCfEcqT8ELFbGNRasGiAj0LsqWM8L7DGZ8BOB+zSzb3kQ9e4C9e9JhzeKnHl38cHn+ee+65p5SYNCZMpXxLXoF7WlA0yH5OzrFWyEUXXVRRMsWiUP1SlEpBULa4X5Q3nilJU63mXrj99ttLyT29o/3acsst/f4tGjU26bNTBBouBqlDbgL2DFtu3so9GXUUARGoINCseYvIw0aV33/4wx+6mYTQeoQIPVJM8P8BuaOQatXtJ06c6MVx6WcO455aIRbGNT+SUtThUMfnuphpGH+PPfZgN7c0a96KecJMWWh4DXP09bQQMWdWwxNSHWCLqYtUHeRzIkJzqEKEJGyqmbeqjUkKBUui6ek84nEiZzFlMY7VP/R0C+n0I7Efn+QqwyWhGfOmzFtpgoVsy7xlX1aJCIiACFQlwEoChU5xaI2FUDHjEIFkCS/9mCVgLDuXFYBs1CXOrZhoOIaJGqGNFR0yqVPjLK4ksGpA6RZWhmgf6vhcg5pwRG+ymtRKwVEXiasgta6FOQhnX1NcKmqz1Ton3c5qGGVRXnjhBTdPYSqjph+ro62UuCpnyqMXT47XotDz73//ey+uTMkYnnEtBmRsp2gvq3qcJ+kMAZm3OsNdVxUBEehyAvZ3Za7K783cRtb/hMggJK0kHXjggd5WrfivH6jzKzs+/iOUf6mXOqDOcLkPxbp/tV74cSBKk1B0uFrEVOxT79Oyn3vUKooOaR0ovUJYeKsF050lDfXyMulr2UpTsAzsrrCiWBL1RbQWdfiyEovpRlbZ49pvDwEpPe3hrKuIgAj0GAFWJXiJpZ1SuQXyRsVaZPx134xklZJq51rmdL9mM46+cZw848e+RX7i04PEYrO1xibcO/o21eqTpx0FxErreFcci1sp55xzjq/m4JvEs08LShgO0YTfk8OMmntmgvN8PijNaYm+TjE1RfqYtttHQEpP+1jrSiIgAj1EoBWV3/MoJShSvDitPE3TtPKM3/SgOU6I5pp0gdlqp5F/ql6y1Grn1GqzEi1+KJoda/UbTjuJB3E+xoSVNaFZpvhw4YUXetLCuGKHkzsrWaxA3XHHHWWXZlUIIfJM0jkCUno6x15XFgER6GICeSu/x7/+rdRH6W4Iz0ZQXqKgkFiOGA/djm3VPmNG8xixNNzx8UdptcTsys8991zdS+GrVE3gRfRTM4JSAVPMSWkZyljp8+M2JrSddtrJkyBaDcPY7H45mK+I6jNnbPf3Kh20jeibZbX70s3Bysv4flFKX9ng2slNQEpPblTqKAIiMGgELHLKX6wnnXSSv+S4/2eeecbDpfmrntUg8sXgwGqFXN0BGbMLJVsQ8tPQH+HFicnDIrq8X3T+5ZglvOMjWM23gKM02YxxaEaGM74lxPMVCswurRTmiBmwnh8SofyUQ7EEq2VTQdnBPwc+N998c9mxuBOzG3MchpzDeDhqE+YfJc9YsS+rMUg1cxOZoy2RpKeO4NpbbbWV/6DQsM0xnjlh96QFSD/L6667zu8lrkTF6+HLQ3mVeqVdYl99to6AlJ7WsdXIIiACPU6AFxclC4je4sVO7aU111zTywyQcA7BVwMFCNNOXBnAJILzMI690ayx6aabugJlhYLDQw89FJZccskSHZQq/IRQdqjtRETXqFGjhj0+ZSFQEjDFtFIwb+24444B/5esL0u8Lrl1UOpYHUkLq1+048NE3qJqwuoNTtAW0u9mP0o/wBHFJy15xqL/vvvu6+Uy2CaHkWVE9/w67MOK3Eas1Nx9990+J+bFD2YukhTGBIPnn39+2HjjjT16i4SHrOKwokOUVjR5MSZKFDl89tlnH3YlHSQwwr6g5d5WHZxMr1+apVZqzGyyySa9fiuavwj0JQH8LcgQzGpKM8LLlL/UcWzGiTb9QovjcIyXM6s/fPJfa1RcYh8UIFZE4kuT+VBDihclzsBE+FAot5oMZXzG4Zp5C8zG67IyBKNmHLW5DsoPK14oAFmBB6Hm8847b/aQr9x8//vfd0Vxl112qThOA0rRO++8432yzuXpE1jtaTRWun8R2zwbFOO55pqraqTc3nvv7Zn0UWYbOXun54MyzLOIprH0MW0PicCUclf0IY2hk0RABESgvwnkqfyOuSNK9MOJ+/GzlvLBSxwTTz0Z6vi1rlnvWkM5xnUoLsoLfvTo0W7iSY/DH4XVFB76YBZjdYQCnrUk60hcq1+esWqdO9R2nk30a8qOgTkTkx6muWYUnuw42i+GgJSeYjhqFBEQARFomkD0J3n++ecDkU29Lph6MKlhfqISOisfeeSuu+7y/nkVm3pjFjlWvevkOUYiRvyqYFFrBS/POOpTHAH59BTHUiOJgAiIQC4CmMsmTJgQeEEjJBD85S9/mevcbu80fvx4z1tjJRdyT5UEf5gFi5AixxrufPDbIuy9lWH1w53joJ2vlZ5Be+K6XxEQgY4TwFx2wgkn+E+cTD8VmW1kqov33O+fOKZLuouAlJ7ueh6ajQiIwIAQKMKUMyCodJsiUBgBmbcKQ6mBREAEREAEREAEupmAlJ5ufjqamwiIgAiIgAiIQGEElKenMJTBE4+tvPLKqq1SIFMNJQJFErjllls8bHjFFVcscti+G4ucROSdqZZvp+9utotvaNKkSYGkjsrTU9hDmiKlpzCWIZBxVSICIlCfALWgiFr67Gc/62n+6/fWUREYbAL4fp1++umDDaG4u5fSUxxLjSQCIpCHAIUiKblATSqF8uYhpj4iIAIFEZgin56CSGoYERABERABERCB7iYgpae7n49mJwIiIAIiIAIiUBABKT0FgdQwIiACIiACIiAC3U1ASk93Px/NTgREQAREQAREoCACUnoKAqlhREAEREAEREAEupuAlJ7ufj6anQiIgAiIgAiIQEEEpPQUBFLDiIAIiIAIiIAIdDcBKT3d/Xw0OxEQAREQAREQgYIISOkpCKSGEQEREAEREAER6G4CUnq6+/lodiIgAiIgAiIgAgURkNJTEEgNIwIiIAIiIAIi0N0EpPR09/PR7ERABERABERABAoiIKWnIJAaRgREQAREQAREoLsJSOnp7uej2YmACIiACIiACBREQEpPQSA1jAiIgAiIgAiIQHcTkNLT3c9HsxMBERABERABESiIgJSegkBqGBEQAREQAREQge4mIKWnu5+PZicCIiACIiACIlAQASk9BYHUMCIgAiIgAiIgAt1NQEpPdz8fzU4EREAEREAERKAgAlJ6CgKpYURABERABERABLqbgJSe7n4+mp0IiIAIiIAIiEBBBKT0FARSw4iACIiACIiACHQ3ASk93f18NDsREAEREAEREIGCCEjpKQikhhEBERABERABEehuAlJ6uvv5aHYiIAIiIAIiIAIFEZDSUxBIDSMCIiACIiACItDdBKT0dPfz0exEQAREQAREQAQKIiClpyCQGkYEREAEREAERKC7CUjp6e7no9mJgAiIgAiIgAgUREBKT0EgNYwIiIAIiIAIiEB3E5DS093PR7MTAREQAREQAREoiICUnoJAahgREAEREAEREIHuJjAiMenuKWp2IiACvUrg7bffDvPOO294/fXXy27h/fffD9NMM01Z2wILLBAmTZoURowYUdauHREQAREoiMAUrfQURFLDiIAIVBKYbrrpwjrrrBM++OCD8N5775V++FsrvY8StNFGG0nhqUSoFhEQgQIJSOkpEKaGEgERqCSwxRZbuNJTeWRqC0rQ+PHjpzZoSwREQARaQEDmrRZA1ZAiIAJTCbCiM/vss4fXXnttamNma+GFFw5PPPFEplW7IiACIlAoAZm3CsWpwURABCoIjBw50ldxRo0aVXGMBo5vs802VY+pUQREQASKJCDzVpE0NZYIiEBVApi43n333arHWAmSaasqGjWKgAgUTEDmrYKBajgREIFKAvjszDPPPGHKlCkVB0ePHh3uvffeinY1iIAIiEDBBGTeKhiohhMBEahCgDD0rbfeOmRNXISty7RVBZiaREAEWkJAKz0twapBRUAEsgTuu+++MGbMmLJmlKHJkyf7KlDZAe2IgAiIQPEEtNJTPFONKAIiUI0AZqxFFlmkdAiFZ+zYsVJ4SkS0IQIi0GoCcmRuNWGNLwIiUCIwYcIEj9aiAaVHpq0SGm2IgAi0gYDMW22ArEuIgAj8jwC5eBZddFHfwZ/n5ZdfDrPMMovwiIAIiEA7CMi81Q7KuoYIiMD/CGDein49a6+9thQefTFEQATaSmBkW6+mi/UEAf76vvHGG3tirppk7xGIIeqs+FxyySW9dwOacU8QQKmeaaaZemKummT7CMi81T7WPXOlm266KYwbN65n5quJioAIiECWwKOPPhqWWGKJbLP2B5uAzFuD/fzr3/3f//73QFI5/Qw2g+OOOy4ssMAChX4PzjzzzELH64bv6K233ur/oJ5//vm+u7du4Jt3Dvfff3/9/9h0dKAJKHproB+/bl4EOkNg22237cyFdVUREIGBJiClZ6Afv25eBERABERABAaHgJSewXnWulMREAEREAERGGgCUnoG+vHr5kVABERABERgcAhI6RmcZ607FQEREAEREIGBJiClZ6Afv25eBERABERABAaHgJSewXnWulMR6BgBwo1XX3318OUvf7ljc+j2C//tb38LhxxySGmal156adhggw28KOtBBx0UHnjggdKxvBuvv/562H///cPKK68c1ltvvXD++eeH//znP3lPr9qPkPzdd989PPXUUxXHud4RRxwRvvjFLwaSAx599NHhnXfeqehHeD912FZdddXw7W9/O9x1112lPv/+97/Dlltu6SVKSo3aEIGiCNh/RhIRKCNg2ZgT+34llqenrF07g0nA8vQklqdnWDf/3nvvJbPPPnsyzzzzJO+///6wxhruyR988MFwh6h6vr3I/d+NKQVVj9drvOWWW5I111wzmTJlinc7/fTTff/JJ59MrrvuumTppZf2sS+//PJ6w1QcM+UjWXjhhZOvf/3ryayzzupjmAJV0S9PA3PbY489kummm87HsXw4ZaeZwuPz/MhHPpJ8/OMf9z78P7LaaquVPfNrr702+dCHPpSYApZY9veEe2X/sMMOK4135ZVX+rxNsSq15d1gXlzXkhPmPUX9BofAi1rpKUp71DgiIAI1CVBcdNKkSeGRRx4J9oKr2a/VB/74xz+GQw89tNWXaWp8UwLCZpttFs4666ww55xz+rk//elPvS7ZQgst5Ksm++23X6k97+AXXnihZ1aH+3nnnRfuvfder3B/2mmnefLEvOPEfi+88EL45je/6atGsS39eeSRRwZKjPzjH/8I9L3iiivCqFGjAhnef/Ob35S6futb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7bWBGE/rrrtu+P73v5+1veyyy5zZ2WKLLcKFF14YXv7yl/ucjjrqKG/zrGc9y4Mkv+Y1rwmzZ8/O7uvLiT38BjrvvPOISthQpgshIASEgBCYugh85StfiQsuuGDPADz00ENx7ty5PffTSwc/+MEP4uGHH95LFy3vveuuu3z/tOCELduUVXz3u9+N06ZNi3/605+yapPKxLe+9a3Z9Ve/+lXve7PNNsvKqk4ee+yx+IY3vKGh39122837+dznPld1e1P9TTfdFG+//fY4ffp07+MXv/hFQxue7wtf+MJ4xRVXePkf//jHuO2223rbNdZYI2u74oorRmOMsmtOTAoYX/CCFzSUGeMXjSGKxqA1lFddzJkzx8c0iVOx6RxJevrCOqoTISAEhIAQqELgec97XlhooYWqmg2s/g9/+EN4xzveEZ544omBjdFpx//973/DnnvuGd7znveEF7/4xdntiy22WLjkkkvC448/7mXGNPjx73//e9am6gTJzNFHH93Q79ve9ja/7WUve1nV7U31qMdWWGGF8JKXvKSpjgKkNvvvv79LcbimHWo56Fe/+pUfjQsJf/3rX8Ott97aEOEblRbSqDyh/uJZfepTn8oX93TeOEJPXelmISAEhIAQEALlCPz73/8O2Ki8+c1vzpiOG2+8MXzwgx8MxxxzTEDthXoHu5+zzjor6wQ1jEk53Cbl7rvvdlXP+uuvH0wKEkzS4O3e//73h7e//e1h5syZfn3HHXe4TQlle+21l5dxL3mY2HC/9a1vhV122SUkW5Orr746mATFbVGygSfo5Atf+ILbxrzzne9sGBGsTLIS5p33qWxRrAnadNNNG9q1uzDpUVM6DJN0hTXXXDOgWuo30ef73ve+hm5h1hZddNHwohe9yMvnmWee8Ja3vCXAvL373e8OvBeowa677rqw3377NdzL2nl+n/70pwMMXF+oKPuRequIiK6FgBAQAlMbgV7VW8ZoxFmzZkXbxFztgNrltttui2br4ddLLrlkXHnllaNt/NGkQdF+8cfrr7/eQbdNNJotircz6UQ0xiaa8atfP/vZz46/+93vIv3Zxupl6UmhKqIfkzZ4keVjisZceRuTIMQf//jHkTLooIMO8vJ99tnHr7v914166xWveEVcaaWVKoc0CU00xiE++OCDlW3LGqBqMibD14mqrBfiORkDEovqrbI+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FUJACAgBISAEhEAFAmJ6KgBStRAQAkJACAgBITAeCIjpGY/nqFUIASEgBISAEBACFQiI6akASNVCQAgIASEgBITAeCAgpmc8nqNWIQSEgBAQAkJACFQgME80qmijaiEgBIRAVwg8+uijYdq0aeHhhx9uuP+JJ54Iz3jGMxrKllpqqXDXXXeFeeaZp6FcF0JACAiBPiFwryQ9fUJS3QgBIdCMwAILLBC22mqr8OSTT4bHH388++O3Vv4aJmi77bYTw9MMoUqEgBDoIwJievoIproSAkKgGYEddtjBmZ7mmqdLYIJmzpz5dIHOhIAQEAIDQEDqrQGAqi6FgBB4GgEkOosttliYO3fu04WFs2WWWSbcfffdhVJdCgEhIAT6ioDUW32FU50JASHQhMC8887rUpz55puvqY4C6nfaaafSOhUKASEgBPqJgNRb/URTfQkBIVCKACquxx57rLQOSZBUW6XQqFAICIE+IyD1Vp8BVXdCQAg0I4DNzpJLLhnuvffepspVV1013HLLLU3lKhACQkAI9BkBqbf6DKi6EwJCoAQB3NBnzZoViiou3Nal2ioBTEVCQAgMBAFJegYCqzoVAkKgiMCtt94aVltttYZimKF77rnHpUANFboQAkJACPQfAUl6+o+pehQCQqAMAdRYyy67bFYFw7P++uuL4ckQ0YkQEAKDRkCGzINGWP0LASGQIfCud73LvbUogOmRaiuDRidCQAhMAAJSb00AyBpCCAiBpxAgFs9yyy3nF9jz3H///WGRRRYRPEJACAiBiUBA6q2JQFljCAEh8BQCqLeSXc+WW24phkcvhhAQAhOKwLwTOpoGGwgCF154YSB3kUgIjAICyUUdic/5558/ClPWHIVAePaznx223nprITHiCEi9NeIPkOkvuOCCgWzWIiEgBISAEBgMAksvvXT4/e9/P5jO1etEISD11kQhPehxvvKVrwQCwOlPGIzCO3DaaadVvqtf/OIXw/Of//zKdqOw3kHO8Re/+IV/vdx+++3CakDfgR//+McH/RWu/icIAXlvTRDQGkYICIGnEdh5552fvtCZEBACQmCCEBDTM0FAaxghIASEgBAQAkJgchEQ0zO5+Gt0ISAEhIAQEAJCYIIQENMzQUBrGCEgBISAEBACQmByERDTM7n4a3QhIASEgBAQAkJgghAQ0zNBQGsYISAEhIAQEAJCYHIRENMzufhrdCEgBAaIAK7ir33ta8PrX//6AY4y2l3/9re/DUcccUS2iG984xvhjW98oyeDPeyww8Ivf/nLrK7uycMPPxw++MEPhte85jXhDW94QzjnnHPCv//977q3l7b785//HPbee+/SWDmMd/TRR4fNNtssEOn7Yx/7WPjPf/6T9fP5z38+fO1rX8uudTJ1ERDTM3WfvVYuBMYegSeffNI37VtuuSVwPpkEAzZs9LOf/Sy8973vDXvssYdP7eSTTw5f+tKXwmc/+9lw5JFHhm9+85vhVa96lR87mftb3vKWcO655wbSjlxzzTVhhx12cEakkz5S2/vuuy/su+++nrPtpJNOCv/85z9TlR//8Y9/hPXWWy8QS4eYRZdddpkzXFtssUX2zEl0e+qppwaYONHURkBMz9R+/lq9EBhrBEhqetddd4Xf/OY34f/+b/K+7n74wx86EzFMYH/ve98Lb3vb28Lpp58eXvjCF/rUvvCFL3g+tJe97GUuNTnkkEOy8rpz//rXvx6mT5/uuJ999tkBhnPeeed1Zqobxu8vf/mLM2ZIjcroox/9aCC1yQMPPBBo+61vfSvMN9984YorrgiXXnqp3/KsZz0rXHLJJYG5ffnLXy7rRmVTBIHJ+xaYIgBrmUJACEwuAs973vPCQgstNGmT+MMf/hDe8Y53DFV+vP/+979hzz33DO95z3vCi1/84gybxRZbzJmDxx9/3MvWWGMNP/7973/P2lSdPPe5z3VJS2IyX/KSl4R11103kMZhnnnmqbq9qX711VcPK6ywQqCfIsFEwVAinVpggQUCTO6b3vQmV3HRNq+ao/5DH/pQOOigg8KDDz5Y7ErXUwQBMT1T5EFrmUJgKiKAHQk2Km9+85szpuPGG2/0TfmYY45xKQTqHex+zjrrrAwibES++tWv+gZ69913u5Rm/fXXD287z35UAAAb50lEQVR961tdhULD97///eHtb397mDlzpt93xx13uBqHsr322svLuHfDDTcMf/3rX10Cscsuu4QbbrjB61Ap7brrrn4+0f+Q6JBH6p3vfGfD0GB10003uWSGCtYEbbrppn6s869oP3XvvfcGUmTAbAyCUKM95znPaeh688039+sllliioXzHHXf0tWHzI5qiCBinLBpxBOwXTLTcWyO+Ck1fCDQiYLm3ouXeaizs4MoYjThr1qxo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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.keras.utils.plot_model(\n",
    "    model,\n",
    "    show_shapes=True,\n",
    "    show_layer_names=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train a model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "log_dir=\".logs/fit/\" + datetime.datetime.now().strftime(\"%Y%m%d-%H%M%S\")\n",
    "tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "adam_optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)\n",
    "model.compile(\n",
    "    optimizer=adam_optimizer,\n",
    "    loss=tf.keras.losses.categorical_crossentropy,\n",
    "    metrics=['accuracy'],\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 4500 samples, validate on 500 samples\n",
      "Epoch 1/200\n",
      "4500/4500 [==============================] - 5s 1ms/sample - loss: 2.3158 - accuracy: 0.2441 - val_loss: 2.1193 - val_accuracy: 0.3800\n",
      "Epoch 2/200\n",
      "4500/4500 [==============================] - 1s 275us/sample - loss: 1.9693 - accuracy: 0.3836 - val_loss: 1.9278 - val_accuracy: 0.3827\n",
      "Epoch 3/200\n",
      "4500/4500 [==============================] - 2s 400us/sample - loss: 1.8441 - accuracy: 0.3830 - val_loss: 1.7944 - val_accuracy: 0.3900\n",
      "Epoch 4/200\n",
      "4500/4500 [==============================] - 2s 505us/sample - loss: 1.7833 - accuracy: 0.3804 - val_loss: 1.7343 - val_accuracy: 0.3880\n",
      "Epoch 5/200\n",
      "4500/4500 [==============================] - 1s 279us/sample - loss: 1.7441 - accuracy: 0.3870 - val_loss: 1.7016 - val_accuracy: 0.4013\n",
      "Epoch 6/200\n",
      "4500/4500 [==============================] - 1s 282us/sample - loss: 1.7044 - accuracy: 0.3932 - val_loss: 1.6716 - val_accuracy: 0.4080\n",
      "Epoch 7/200\n",
      "4500/4500 [==============================] - 1s 246us/sample - loss: 1.6768 - accuracy: 0.4010 - val_loss: 1.6591 - val_accuracy: 0.4067\n",
      "Epoch 8/200\n",
      "4500/4500 [==============================] - 1s 258us/sample - loss: 1.6766 - accuracy: 0.4054 - val_loss: 1.6476 - val_accuracy: 0.4133\n",
      "Epoch 9/200\n",
      "4500/4500 [==============================] - 1s 280us/sample - loss: 1.6474 - accuracy: 0.4137 - val_loss: 1.6307 - val_accuracy: 0.4173\n",
      "Epoch 10/200\n",
      "4500/4500 [==============================] - 1s 311us/sample - loss: 1.6424 - accuracy: 0.4112 - val_loss: 1.6255 - val_accuracy: 0.4267\n",
      "Epoch 11/200\n",
      "4500/4500 [==============================] - 1s 262us/sample - loss: 1.6164 - accuracy: 0.4192 - val_loss: 1.5914 - val_accuracy: 0.4267\n",
      "Epoch 12/200\n",
      "4500/4500 [==============================] - 1s 263us/sample - loss: 1.5813 - accuracy: 0.4272 - val_loss: 1.6045 - val_accuracy: 0.4200\n",
      "Epoch 13/200\n",
      "4500/4500 [==============================] - 1s 303us/sample - loss: 1.5218 - accuracy: 0.4425 - val_loss: 1.4479 - val_accuracy: 0.4593\n",
      "Epoch 14/200\n",
      "4500/4500 [==============================] - 1s 261us/sample - loss: 1.4390 - accuracy: 0.4649 - val_loss: 1.4137 - val_accuracy: 0.4633\n",
      "Epoch 15/200\n",
      "4500/4500 [==============================] - 1s 292us/sample - loss: 1.3753 - accuracy: 0.4837 - val_loss: 1.3286 - val_accuracy: 0.4913\n",
      "Epoch 16/200\n",
      "4500/4500 [==============================] - 1s 280us/sample - loss: 1.3659 - accuracy: 0.4901 - val_loss: 1.5145 - val_accuracy: 0.4467\n",
      "Epoch 17/200\n",
      "4500/4500 [==============================] - 1s 267us/sample - loss: 1.3072 - accuracy: 0.5157 - val_loss: 1.4779 - val_accuracy: 0.4580\n",
      "Epoch 18/200\n",
      "4500/4500 [==============================] - 2s 416us/sample - loss: 1.2754 - accuracy: 0.5273 - val_loss: 1.2320 - val_accuracy: 0.5387\n",
      "Epoch 19/200\n",
      "4500/4500 [==============================] - 2s 359us/sample - loss: 1.2228 - accuracy: 0.5448 - val_loss: 1.2073 - val_accuracy: 0.5420\n",
      "Epoch 20/200\n",
      "4500/4500 [==============================] - 2s 461us/sample - loss: 1.1880 - accuracy: 0.5607 - val_loss: 1.1793 - val_accuracy: 0.5527\n",
      "Epoch 21/200\n",
      "4500/4500 [==============================] - 2s 434us/sample - loss: 1.1723 - accuracy: 0.5654 - val_loss: 1.1488 - val_accuracy: 0.5873\n",
      "Epoch 22/200\n",
      "4500/4500 [==============================] - 2s 367us/sample - loss: 1.1638 - accuracy: 0.5629 - val_loss: 1.1786 - val_accuracy: 0.5687\n",
      "Epoch 23/200\n",
      "4500/4500 [==============================] - 2s 350us/sample - loss: 1.1214 - accuracy: 0.5963 - val_loss: 1.1130 - val_accuracy: 0.6000\n",
      "Epoch 24/200\n",
      "4500/4500 [==============================] - 2s 346us/sample - loss: 1.0922 - accuracy: 0.6054 - val_loss: 1.1018 - val_accuracy: 0.6047\n",
      "Epoch 25/200\n",
      "4500/4500 [==============================] - 1s 306us/sample - loss: 1.0732 - accuracy: 0.6150 - val_loss: 1.1317 - val_accuracy: 0.5953\n",
      "Epoch 26/200\n",
      "4500/4500 [==============================] - 1s 248us/sample - loss: 1.0563 - accuracy: 0.6198 - val_loss: 1.0575 - val_accuracy: 0.6187\n",
      "Epoch 27/200\n",
      "4500/4500 [==============================] - 1s 330us/sample - loss: 1.0480 - accuracy: 0.6173 - val_loss: 1.0423 - val_accuracy: 0.6167\n",
      "Epoch 28/200\n",
      "4500/4500 [==============================] - 2s 353us/sample - loss: 1.0038 - accuracy: 0.6484 - val_loss: 1.0420 - val_accuracy: 0.6127\n",
      "Epoch 29/200\n",
      "4500/4500 [==============================] - 1s 323us/sample - loss: 1.0229 - accuracy: 0.6237 - val_loss: 1.0975 - val_accuracy: 0.5820\n",
      "Epoch 30/200\n",
      "4500/4500 [==============================] - 2s 358us/sample - loss: 0.9974 - accuracy: 0.6374 - val_loss: 1.0929 - val_accuracy: 0.5780\n",
      "Epoch 31/200\n",
      "4500/4500 [==============================] - 2s 392us/sample - loss: 0.9672 - accuracy: 0.6513 - val_loss: 0.9835 - val_accuracy: 0.6293\n",
      "Epoch 32/200\n",
      "4500/4500 [==============================] - 2s 344us/sample - loss: 0.9327 - accuracy: 0.6676 - val_loss: 0.9199 - val_accuracy: 0.6687\n",
      "Epoch 33/200\n",
      "4500/4500 [==============================] - 2s 362us/sample - loss: 0.8927 - accuracy: 0.6875 - val_loss: 0.8986 - val_accuracy: 0.6733\n",
      "Epoch 34/200\n",
      "4500/4500 [==============================] - 2s 489us/sample - loss: 0.8669 - accuracy: 0.6944 - val_loss: 0.8837 - val_accuracy: 0.6727\n",
      "Epoch 35/200\n",
      "4500/4500 [==============================] - 2s 334us/sample - loss: 0.8370 - accuracy: 0.7062 - val_loss: 0.8414 - val_accuracy: 0.7007\n",
      "Epoch 36/200\n",
      "4500/4500 [==============================] - 1s 297us/sample - loss: 0.8041 - accuracy: 0.7193 - val_loss: 0.8041 - val_accuracy: 0.7220\n",
      "Epoch 37/200\n",
      "4500/4500 [==============================] - 2s 384us/sample - loss: 0.7697 - accuracy: 0.7292 - val_loss: 0.8067 - val_accuracy: 0.7080\n",
      "Epoch 38/200\n",
      "4500/4500 [==============================] - 2s 450us/sample - loss: 0.7470 - accuracy: 0.7353 - val_loss: 0.7434 - val_accuracy: 0.7353\n",
      "Epoch 39/200\n",
      "4500/4500 [==============================] - 1s 299us/sample - loss: 0.7102 - accuracy: 0.7525 - val_loss: 0.7253 - val_accuracy: 0.7373\n",
      "Epoch 40/200\n",
      "4500/4500 [==============================] - 1s 258us/sample - loss: 0.6950 - accuracy: 0.7520 - val_loss: 0.7477 - val_accuracy: 0.7200\n",
      "Epoch 41/200\n",
      "4500/4500 [==============================] - 2s 359us/sample - loss: 0.6823 - accuracy: 0.7551 - val_loss: 0.6489 - val_accuracy: 0.7813\n",
      "Epoch 42/200\n",
      "4500/4500 [==============================] - 1s 312us/sample - loss: 0.6113 - accuracy: 0.7959 - val_loss: 0.6131 - val_accuracy: 0.7960\n",
      "Epoch 43/200\n",
      "4500/4500 [==============================] - 2s 422us/sample - loss: 0.5712 - accuracy: 0.8155 - val_loss: 0.5764 - val_accuracy: 0.8000\n",
      "Epoch 44/200\n",
      "4500/4500 [==============================] - 2s 400us/sample - loss: 0.5370 - accuracy: 0.8361 - val_loss: 0.5564 - val_accuracy: 0.8067\n",
      "Epoch 45/200\n",
      "4500/4500 [==============================] - 1s 303us/sample - loss: 0.4961 - accuracy: 0.8553 - val_loss: 0.5110 - val_accuracy: 0.8360\n",
      "Epoch 46/200\n",
      "4500/4500 [==============================] - 1s 251us/sample - loss: 0.4710 - accuracy: 0.8637 - val_loss: 0.4872 - val_accuracy: 0.8453\n",
      "Epoch 47/200\n",
      "4500/4500 [==============================] - 1s 256us/sample - loss: 0.4383 - accuracy: 0.8778 - val_loss: 0.4712 - val_accuracy: 0.8447\n",
      "Epoch 48/200\n",
      "4500/4500 [==============================] - 1s 317us/sample - loss: 0.4155 - accuracy: 0.8886 - val_loss: 0.4467 - val_accuracy: 0.8600\n",
      "Epoch 49/200\n",
      "4500/4500 [==============================] - 2s 374us/sample - loss: 0.4020 - accuracy: 0.8912 - val_loss: 0.4096 - val_accuracy: 0.8880\n",
      "Epoch 50/200\n",
      "4500/4500 [==============================] - 1s 318us/sample - loss: 0.3830 - accuracy: 0.8979 - val_loss: 0.4263 - val_accuracy: 0.8733\n",
      "Epoch 51/200\n",
      "4500/4500 [==============================] - 1s 264us/sample - loss: 0.3631 - accuracy: 0.9044 - val_loss: 0.3707 - val_accuracy: 0.9060\n",
      "Epoch 52/200\n",
      "4500/4500 [==============================] - 1s 320us/sample - loss: 0.3297 - accuracy: 0.9261 - val_loss: 0.3472 - val_accuracy: 0.9207\n",
      "Epoch 53/200\n",
      "4500/4500 [==============================] - 1s 278us/sample - loss: 0.3064 - accuracy: 0.9381 - val_loss: 0.3332 - val_accuracy: 0.9227\n",
      "Epoch 54/200\n",
      "4500/4500 [==============================] - 1s 252us/sample - loss: 0.2881 - accuracy: 0.9440 - val_loss: 0.3403 - val_accuracy: 0.9240\n",
      "Epoch 55/200\n",
      "4500/4500 [==============================] - 2s 345us/sample - loss: 0.2742 - accuracy: 0.9452 - val_loss: 0.3117 - val_accuracy: 0.9320\n",
      "Epoch 56/200\n",
      "4500/4500 [==============================] - 2s 466us/sample - loss: 0.2592 - accuracy: 0.9536 - val_loss: 0.2773 - val_accuracy: 0.9413\n",
      "Epoch 57/200\n",
      "4500/4500 [==============================] - 2s 467us/sample - loss: 0.2463 - accuracy: 0.9549 - val_loss: 0.2671 - val_accuracy: 0.9507\n",
      "Epoch 58/200\n",
      "4500/4500 [==============================] - 2s 484us/sample - loss: 0.2407 - accuracy: 0.9557 - val_loss: 0.3212 - val_accuracy: 0.8940\n",
      "Epoch 59/200\n",
      "4500/4500 [==============================] - 2s 424us/sample - loss: 0.2791 - accuracy: 0.9250 - val_loss: 0.2557 - val_accuracy: 0.9380\n",
      "Epoch 60/200\n",
      "4500/4500 [==============================] - 2s 428us/sample - loss: 0.2160 - accuracy: 0.9613 - val_loss: 0.2234 - val_accuracy: 0.9600\n",
      "Epoch 61/200\n",
      "4500/4500 [==============================] - 2s 455us/sample - loss: 0.1951 - accuracy: 0.9708 - val_loss: 0.2309 - val_accuracy: 0.9513\n",
      "Epoch 62/200\n",
      "4500/4500 [==============================] - 2s 364us/sample - loss: 0.1822 - accuracy: 0.9746 - val_loss: 0.1973 - val_accuracy: 0.9653\n",
      "Epoch 63/200\n",
      "4500/4500 [==============================] - 2s 405us/sample - loss: 0.1660 - accuracy: 0.9798 - val_loss: 0.1984 - val_accuracy: 0.9593\n",
      "Epoch 64/200\n",
      "4500/4500 [==============================] - 2s 369us/sample - loss: 0.1581 - accuracy: 0.9804 - val_loss: 0.1806 - val_accuracy: 0.9673\n",
      "Epoch 65/200\n",
      "4500/4500 [==============================] - 2s 443us/sample - loss: 0.1504 - accuracy: 0.9800 - val_loss: 0.1723 - val_accuracy: 0.9753\n",
      "Epoch 66/200\n",
      "4500/4500 [==============================] - 2s 366us/sample - loss: 0.1391 - accuracy: 0.9847 - val_loss: 0.1605 - val_accuracy: 0.9753\n",
      "Epoch 67/200\n",
      "4500/4500 [==============================] - 2s 395us/sample - loss: 0.1336 - accuracy: 0.9836 - val_loss: 0.1561 - val_accuracy: 0.9713\n",
      "Epoch 68/200\n",
      "4500/4500 [==============================] - 2s 419us/sample - loss: 0.1251 - accuracy: 0.9861 - val_loss: 0.1406 - val_accuracy: 0.9773\n",
      "Epoch 69/200\n",
      "4500/4500 [==============================] - 2s 461us/sample - loss: 0.1158 - accuracy: 0.9882 - val_loss: 0.1333 - val_accuracy: 0.9813\n",
      "Epoch 70/200\n",
      "4500/4500 [==============================] - 1s 318us/sample - loss: 0.1215 - accuracy: 0.9856 - val_loss: 0.1617 - val_accuracy: 0.9627\n",
      "Epoch 71/200\n",
      "4500/4500 [==============================] - 2s 390us/sample - loss: 0.1783 - accuracy: 0.9524 - val_loss: 0.1554 - val_accuracy: 0.9693\n",
      "Epoch 72/200\n",
      "4500/4500 [==============================] - 1s 300us/sample - loss: 0.1315 - accuracy: 0.9769 - val_loss: 0.1286 - val_accuracy: 0.9760\n",
      "Epoch 73/200\n",
      "4500/4500 [==============================] - 1s 272us/sample - loss: 0.1033 - accuracy: 0.9891 - val_loss: 0.1184 - val_accuracy: 0.9847\n",
      "Epoch 74/200\n",
      "4500/4500 [==============================] - 1s 224us/sample - loss: 0.0910 - accuracy: 0.9919 - val_loss: 0.1070 - val_accuracy: 0.9847\n",
      "Epoch 75/200\n",
      "4500/4500 [==============================] - 2s 382us/sample - loss: 0.0829 - accuracy: 0.9939 - val_loss: 0.1076 - val_accuracy: 0.9860\n",
      "Epoch 76/200\n",
      "4500/4500 [==============================] - 2s 391us/sample - loss: 0.0806 - accuracy: 0.9928 - val_loss: 0.1017 - val_accuracy: 0.9900\n",
      "Epoch 77/200\n",
      "4500/4500 [==============================] - 1s 233us/sample - loss: 0.0783 - accuracy: 0.9933 - val_loss: 0.1271 - val_accuracy: 0.9727\n",
      "Epoch 78/200\n",
      "4500/4500 [==============================] - 1s 322us/sample - loss: 0.2431 - accuracy: 0.9224 - val_loss: 0.1460 - val_accuracy: 0.9673\n",
      "Epoch 79/200\n",
      "4500/4500 [==============================] - 1s 253us/sample - loss: 0.0956 - accuracy: 0.9849 - val_loss: 0.0942 - val_accuracy: 0.9853\n",
      "Epoch 80/200\n",
      "4500/4500 [==============================] - 1s 331us/sample - loss: 0.0699 - accuracy: 0.9954 - val_loss: 0.0861 - val_accuracy: 0.9907\n",
      "Epoch 81/200\n",
      "4500/4500 [==============================] - 2s 372us/sample - loss: 0.0629 - accuracy: 0.9960 - val_loss: 0.0819 - val_accuracy: 0.9907\n",
      "Epoch 82/200\n",
      "4500/4500 [==============================] - 2s 435us/sample - loss: 0.0601 - accuracy: 0.9961 - val_loss: 0.0817 - val_accuracy: 0.9867\n",
      "Epoch 83/200\n",
      "4500/4500 [==============================] - 2s 391us/sample - loss: 0.0570 - accuracy: 0.9966 - val_loss: 0.0733 - val_accuracy: 0.9913\n",
      "Epoch 84/200\n",
      "4500/4500 [==============================] - 2s 546us/sample - loss: 0.0536 - accuracy: 0.9973 - val_loss: 0.0730 - val_accuracy: 0.9900\n",
      "Epoch 85/200\n",
      "4500/4500 [==============================] - 2s 431us/sample - loss: 0.0508 - accuracy: 0.9976 - val_loss: 0.0716 - val_accuracy: 0.9893\n",
      "Epoch 86/200\n",
      "4500/4500 [==============================] - 2s 524us/sample - loss: 0.0491 - accuracy: 0.9973 - val_loss: 0.0705 - val_accuracy: 0.9900\n",
      "Epoch 87/200\n",
      "4500/4500 [==============================] - 2s 548us/sample - loss: 0.0477 - accuracy: 0.9976 - val_loss: 0.0680 - val_accuracy: 0.9913\n",
      "Epoch 88/200\n",
      "4500/4500 [==============================] - 3s 568us/sample - loss: 0.0467 - accuracy: 0.9972 - val_loss: 0.0629 - val_accuracy: 0.9920\n",
      "Epoch 89/200\n",
      "4500/4500 [==============================] - 2s 522us/sample - loss: 0.0426 - accuracy: 0.9981 - val_loss: 0.0616 - val_accuracy: 0.9927\n",
      "Epoch 90/200\n",
      "4500/4500 [==============================] - 3s 578us/sample - loss: 0.0399 - accuracy: 0.9984 - val_loss: 0.0612 - val_accuracy: 0.9907\n",
      "Epoch 91/200\n",
      "4500/4500 [==============================] - 2s 544us/sample - loss: 0.0384 - accuracy: 0.9982 - val_loss: 0.0584 - val_accuracy: 0.9913\n",
      "Epoch 92/200\n",
      "4500/4500 [==============================] - 2s 504us/sample - loss: 0.0388 - accuracy: 0.9982 - val_loss: 0.0556 - val_accuracy: 0.9920\n",
      "Epoch 93/200\n",
      "4500/4500 [==============================] - 2s 526us/sample - loss: 0.0374 - accuracy: 0.9981 - val_loss: 0.0543 - val_accuracy: 0.9927\n",
      "Epoch 94/200\n",
      "4500/4500 [==============================] - 2s 534us/sample - loss: 0.0342 - accuracy: 0.9992 - val_loss: 0.0514 - val_accuracy: 0.9933\n",
      "Epoch 95/200\n",
      "4500/4500 [==============================] - 3s 556us/sample - loss: 0.0321 - accuracy: 0.9989 - val_loss: 0.0534 - val_accuracy: 0.9927\n",
      "Epoch 96/200\n",
      "4500/4500 [==============================] - 2s 502us/sample - loss: 0.0332 - accuracy: 0.9984 - val_loss: 0.0566 - val_accuracy: 0.9907\n",
      "Epoch 97/200\n",
      "4500/4500 [==============================] - 2s 547us/sample - loss: 0.2775 - accuracy: 0.9104 - val_loss: 0.1785 - val_accuracy: 0.9353\n",
      "Epoch 98/200\n",
      "4500/4500 [==============================] - 2s 376us/sample - loss: 0.0776 - accuracy: 0.9842 - val_loss: 0.0620 - val_accuracy: 0.9900\n",
      "Epoch 99/200\n",
      "4500/4500 [==============================] - 2s 365us/sample - loss: 0.0341 - accuracy: 0.9988 - val_loss: 0.0495 - val_accuracy: 0.9940\n",
      "Epoch 100/200\n",
      "4500/4500 [==============================] - 2s 407us/sample - loss: 0.0298 - accuracy: 0.9994 - val_loss: 0.0460 - val_accuracy: 0.9953\n",
      "Epoch 101/200\n",
      "4500/4500 [==============================] - 2s 524us/sample - loss: 0.0282 - accuracy: 0.9993 - val_loss: 0.0455 - val_accuracy: 0.9953\n",
      "Epoch 102/200\n",
      "4500/4500 [==============================] - 3s 559us/sample - loss: 0.0262 - accuracy: 0.9999 - val_loss: 0.0440 - val_accuracy: 0.9947\n",
      "Epoch 103/200\n",
      "4500/4500 [==============================] - 2s 486us/sample - loss: 0.0256 - accuracy: 0.9996 - val_loss: 0.0422 - val_accuracy: 0.9940\n",
      "Epoch 104/200\n",
      "4500/4500 [==============================] - 2s 375us/sample - loss: 0.0241 - accuracy: 0.9996 - val_loss: 0.0411 - val_accuracy: 0.9947\n",
      "Epoch 105/200\n",
      "4500/4500 [==============================] - 2s 398us/sample - loss: 0.0236 - accuracy: 0.9996 - val_loss: 0.0414 - val_accuracy: 0.9940\n",
      "Epoch 106/200\n",
      "4500/4500 [==============================] - 2s 474us/sample - loss: 0.0230 - accuracy: 0.9994 - val_loss: 0.0397 - val_accuracy: 0.9953\n",
      "Epoch 107/200\n",
      "4500/4500 [==============================] - 2s 354us/sample - loss: 0.0215 - accuracy: 0.9996 - val_loss: 0.0379 - val_accuracy: 0.9953\n",
      "Epoch 108/200\n",
      "4500/4500 [==============================] - 2s 378us/sample - loss: 0.0206 - accuracy: 0.9998 - val_loss: 0.0369 - val_accuracy: 0.9953\n",
      "Epoch 109/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4500/4500 [==============================] - 2s 361us/sample - loss: 0.0205 - accuracy: 0.9994 - val_loss: 0.0359 - val_accuracy: 0.9947\n",
      "Epoch 110/200\n",
      "4500/4500 [==============================] - 1s 261us/sample - loss: 0.0190 - accuracy: 0.9999 - val_loss: 0.0359 - val_accuracy: 0.9947\n",
      "Epoch 111/200\n",
      "4500/4500 [==============================] - 1s 264us/sample - loss: 0.0185 - accuracy: 0.9999 - val_loss: 0.0347 - val_accuracy: 0.9947\n",
      "Epoch 112/200\n",
      "4500/4500 [==============================] - 1s 255us/sample - loss: 0.0183 - accuracy: 0.9996 - val_loss: 0.0343 - val_accuracy: 0.9953\n",
      "Epoch 113/200\n",
      "4500/4500 [==============================] - 1s 279us/sample - loss: 0.0177 - accuracy: 0.9997 - val_loss: 0.0352 - val_accuracy: 0.9953\n",
      "Epoch 114/200\n",
      "4500/4500 [==============================] - 2s 344us/sample - loss: 0.0168 - accuracy: 0.9999 - val_loss: 0.0322 - val_accuracy: 0.9947\n",
      "Epoch 115/200\n",
      "4500/4500 [==============================] - 1s 315us/sample - loss: 0.0161 - accuracy: 0.9998 - val_loss: 0.0316 - val_accuracy: 0.9953\n",
      "Epoch 116/200\n",
      "4500/4500 [==============================] - 2s 362us/sample - loss: 0.0153 - accuracy: 1.0000 - val_loss: 0.0306 - val_accuracy: 0.9947\n",
      "Epoch 117/200\n",
      "4500/4500 [==============================] - 2s 382us/sample - loss: 0.0149 - accuracy: 0.9999 - val_loss: 0.0303 - val_accuracy: 0.9953\n",
      "Epoch 118/200\n",
      "4500/4500 [==============================] - 2s 384us/sample - loss: 0.0145 - accuracy: 0.9999 - val_loss: 0.0302 - val_accuracy: 0.9953\n",
      "Epoch 119/200\n",
      "4500/4500 [==============================] - 2s 354us/sample - loss: 0.0138 - accuracy: 0.9999 - val_loss: 0.0291 - val_accuracy: 0.9953\n",
      "Epoch 120/200\n",
      "4500/4500 [==============================] - 1s 328us/sample - loss: 0.0142 - accuracy: 0.9999 - val_loss: 0.0314 - val_accuracy: 0.9947\n",
      "Epoch 121/200\n",
      "4500/4500 [==============================] - 1s 277us/sample - loss: 0.0133 - accuracy: 0.9999 - val_loss: 0.0287 - val_accuracy: 0.9960\n",
      "Epoch 122/200\n",
      "4500/4500 [==============================] - 1s 275us/sample - loss: 0.0127 - accuracy: 0.9999 - val_loss: 0.0277 - val_accuracy: 0.9953\n",
      "Epoch 123/200\n",
      "4500/4500 [==============================] - 1s 273us/sample - loss: 0.0123 - accuracy: 1.0000 - val_loss: 0.0282 - val_accuracy: 0.9953\n",
      "Epoch 124/200\n",
      "4500/4500 [==============================] - 1s 272us/sample - loss: 0.0116 - accuracy: 0.9999 - val_loss: 0.0271 - val_accuracy: 0.9953\n",
      "Epoch 125/200\n",
      "4500/4500 [==============================] - 1s 290us/sample - loss: 0.0116 - accuracy: 1.0000 - val_loss: 0.0270 - val_accuracy: 0.9960\n",
      "Epoch 126/200\n",
      "4500/4500 [==============================] - 1s 300us/sample - loss: 0.0123 - accuracy: 0.9997 - val_loss: 0.0275 - val_accuracy: 0.9960\n",
      "Epoch 127/200\n",
      "4500/4500 [==============================] - 1s 286us/sample - loss: 0.0111 - accuracy: 0.9999 - val_loss: 0.0262 - val_accuracy: 0.9953\n",
      "Epoch 128/200\n",
      "4500/4500 [==============================] - 1s 274us/sample - loss: 0.0115 - accuracy: 0.9996 - val_loss: 0.0372 - val_accuracy: 0.9900\n",
      "Epoch 129/200\n",
      "4500/4500 [==============================] - 1s 289us/sample - loss: 0.5044 - accuracy: 0.8552 - val_loss: 0.2934 - val_accuracy: 0.8887\n",
      "Epoch 130/200\n",
      "4500/4500 [==============================] - 1s 332us/sample - loss: 0.1148 - accuracy: 0.9691 - val_loss: 0.0596 - val_accuracy: 0.9927\n",
      "Epoch 131/200\n",
      "4500/4500 [==============================] - 1s 285us/sample - loss: 0.0319 - accuracy: 0.9979 - val_loss: 0.0359 - val_accuracy: 0.9953\n",
      "Epoch 132/200\n",
      "4500/4500 [==============================] - 1s 269us/sample - loss: 0.0189 - accuracy: 0.9997 - val_loss: 0.0333 - val_accuracy: 0.9947\n",
      "Epoch 133/200\n",
      "4500/4500 [==============================] - 1s 260us/sample - loss: 0.0155 - accuracy: 0.9999 - val_loss: 0.0300 - val_accuracy: 0.9960\n",
      "Epoch 134/200\n",
      "4500/4500 [==============================] - 1s 263us/sample - loss: 0.0137 - accuracy: 1.0000 - val_loss: 0.0292 - val_accuracy: 0.9953\n",
      "Epoch 135/200\n",
      "4500/4500 [==============================] - 1s 265us/sample - loss: 0.0127 - accuracy: 0.9999 - val_loss: 0.0281 - val_accuracy: 0.9947\n",
      "Epoch 136/200\n",
      "4500/4500 [==============================] - 1s 262us/sample - loss: 0.0118 - accuracy: 1.0000 - val_loss: 0.0268 - val_accuracy: 0.9953\n",
      "Epoch 137/200\n",
      "4500/4500 [==============================] - 1s 265us/sample - loss: 0.0111 - accuracy: 1.0000 - val_loss: 0.0256 - val_accuracy: 0.9953\n",
      "Epoch 138/200\n",
      "4500/4500 [==============================] - 1s 269us/sample - loss: 0.0106 - accuracy: 1.0000 - val_loss: 0.0261 - val_accuracy: 0.9947\n",
      "Epoch 139/200\n",
      "4500/4500 [==============================] - 1s 258us/sample - loss: 0.0103 - accuracy: 1.0000 - val_loss: 0.0248 - val_accuracy: 0.9960\n",
      "Epoch 140/200\n",
      "4500/4500 [==============================] - 1s 261us/sample - loss: 0.0097 - accuracy: 1.0000 - val_loss: 0.0246 - val_accuracy: 0.9953\n",
      "Epoch 141/200\n",
      "4500/4500 [==============================] - 1s 277us/sample - loss: 0.0093 - accuracy: 1.0000 - val_loss: 0.0238 - val_accuracy: 0.9960\n",
      "Epoch 142/200\n",
      "4500/4500 [==============================] - 1s 263us/sample - loss: 0.0089 - accuracy: 1.0000 - val_loss: 0.0237 - val_accuracy: 0.9960\n",
      "Epoch 143/200\n",
      "4500/4500 [==============================] - 1s 261us/sample - loss: 0.0087 - accuracy: 1.0000 - val_loss: 0.0231 - val_accuracy: 0.9960\n",
      "Epoch 144/200\n",
      "4500/4500 [==============================] - 1s 263us/sample - loss: 0.0084 - accuracy: 1.0000 - val_loss: 0.0228 - val_accuracy: 0.9960\n",
      "Epoch 145/200\n",
      "4500/4500 [==============================] - 1s 258us/sample - loss: 0.0081 - accuracy: 1.0000 - val_loss: 0.0223 - val_accuracy: 0.9960\n",
      "Epoch 146/200\n",
      "4500/4500 [==============================] - 1s 262us/sample - loss: 0.0079 - accuracy: 1.0000 - val_loss: 0.0221 - val_accuracy: 0.9960\n",
      "Epoch 147/200\n",
      "4500/4500 [==============================] - 1s 290us/sample - loss: 0.0076 - accuracy: 1.0000 - val_loss: 0.0218 - val_accuracy: 0.9960\n",
      "Epoch 148/200\n",
      "4500/4500 [==============================] - 2s 350us/sample - loss: 0.0074 - accuracy: 1.0000 - val_loss: 0.0224 - val_accuracy: 0.9947\n",
      "Epoch 149/200\n",
      "4500/4500 [==============================] - 2s 400us/sample - loss: 0.0071 - accuracy: 1.0000 - val_loss: 0.0216 - val_accuracy: 0.9960\n",
      "Epoch 150/200\n",
      "4500/4500 [==============================] - 2s 366us/sample - loss: 0.0070 - accuracy: 1.0000 - val_loss: 0.0214 - val_accuracy: 0.9960\n",
      "Epoch 151/200\n",
      "4500/4500 [==============================] - 2s 392us/sample - loss: 0.0069 - accuracy: 1.0000 - val_loss: 0.0210 - val_accuracy: 0.9953\n",
      "Epoch 152/200\n",
      "4500/4500 [==============================] - 2s 369us/sample - loss: 0.0066 - accuracy: 1.0000 - val_loss: 0.0208 - val_accuracy: 0.9960\n",
      "Epoch 153/200\n",
      "4500/4500 [==============================] - 2s 365us/sample - loss: 0.0065 - accuracy: 1.0000 - val_loss: 0.0209 - val_accuracy: 0.9953\n",
      "Epoch 154/200\n",
      "4500/4500 [==============================] - 2s 412us/sample - loss: 0.0063 - accuracy: 1.0000 - val_loss: 0.0204 - val_accuracy: 0.9960\n",
      "Epoch 155/200\n",
      "4500/4500 [==============================] - 2s 379us/sample - loss: 0.0060 - accuracy: 1.0000 - val_loss: 0.0203 - val_accuracy: 0.9960\n",
      "Epoch 156/200\n",
      "4500/4500 [==============================] - 2s 377us/sample - loss: 0.0059 - accuracy: 1.0000 - val_loss: 0.0202 - val_accuracy: 0.9960\n",
      "Epoch 157/200\n",
      "4500/4500 [==============================] - 2s 382us/sample - loss: 0.0058 - accuracy: 1.0000 - val_loss: 0.0200 - val_accuracy: 0.9960\n",
      "Epoch 158/200\n",
      "4500/4500 [==============================] - 2s 388us/sample - loss: 0.0060 - accuracy: 0.9999 - val_loss: 0.0197 - val_accuracy: 0.9960\n",
      "Epoch 159/200\n",
      "4500/4500 [==============================] - 2s 391us/sample - loss: 0.0055 - accuracy: 1.0000 - val_loss: 0.0198 - val_accuracy: 0.9960\n",
      "Epoch 160/200\n",
      "4500/4500 [==============================] - 1s 248us/sample - loss: 0.0055 - accuracy: 1.0000 - val_loss: 0.0188 - val_accuracy: 0.9960\n",
      "Epoch 161/200\n",
      "4500/4500 [==============================] - 1s 222us/sample - loss: 0.0053 - accuracy: 1.0000 - val_loss: 0.0191 - val_accuracy: 0.9960\n",
      "Epoch 162/200\n",
      "4500/4500 [==============================] - 1s 217us/sample - loss: 0.0051 - accuracy: 1.0000 - val_loss: 0.0189 - val_accuracy: 0.9960\n",
      "Epoch 163/200\n",
      "4500/4500 [==============================] - 1s 319us/sample - loss: 0.0049 - accuracy: 1.0000 - val_loss: 0.0188 - val_accuracy: 0.9960\n",
      "Epoch 164/200\n",
      "4500/4500 [==============================] - 2s 423us/sample - loss: 0.0048 - accuracy: 1.0000 - val_loss: 0.0186 - val_accuracy: 0.9960\n",
      "Epoch 165/200\n",
      "4500/4500 [==============================] - 2s 372us/sample - loss: 0.0046 - accuracy: 1.0000 - val_loss: 0.0187 - val_accuracy: 0.9960\n",
      "Epoch 166/200\n",
      "4500/4500 [==============================] - 1s 332us/sample - loss: 0.0046 - accuracy: 1.0000 - val_loss: 0.0183 - val_accuracy: 0.9960\n",
      "Epoch 167/200\n",
      "4500/4500 [==============================] - 1s 333us/sample - loss: 0.0044 - accuracy: 1.0000 - val_loss: 0.0198 - val_accuracy: 0.9947\n",
      "Epoch 168/200\n",
      "4500/4500 [==============================] - 1s 333us/sample - loss: 0.0047 - accuracy: 1.0000 - val_loss: 0.0177 - val_accuracy: 0.9960\n",
      "Epoch 169/200\n",
      "4500/4500 [==============================] - 2s 385us/sample - loss: 0.0043 - accuracy: 1.0000 - val_loss: 0.0175 - val_accuracy: 0.9960\n",
      "Epoch 170/200\n",
      "4500/4500 [==============================] - 2s 390us/sample - loss: 0.0041 - accuracy: 1.0000 - val_loss: 0.0180 - val_accuracy: 0.9960\n",
      "Epoch 171/200\n",
      "4500/4500 [==============================] - 2s 377us/sample - loss: 0.0040 - accuracy: 1.0000 - val_loss: 0.0178 - val_accuracy: 0.9960\n",
      "Epoch 172/200\n",
      "4500/4500 [==============================] - 2s 362us/sample - loss: 0.0039 - accuracy: 1.0000 - val_loss: 0.0180 - val_accuracy: 0.9960\n",
      "Epoch 173/200\n",
      "4500/4500 [==============================] - 1s 282us/sample - loss: 0.0039 - accuracy: 1.0000 - val_loss: 0.0177 - val_accuracy: 0.9960\n",
      "Epoch 174/200\n",
      "4500/4500 [==============================] - 2s 362us/sample - loss: 0.0038 - accuracy: 1.0000 - val_loss: 0.0180 - val_accuracy: 0.9953\n",
      "Epoch 175/200\n",
      "4500/4500 [==============================] - 1s 277us/sample - loss: 0.0037 - accuracy: 1.0000 - val_loss: 0.0170 - val_accuracy: 0.9960\n",
      "Epoch 176/200\n",
      "4500/4500 [==============================] - 2s 348us/sample - loss: 0.0036 - accuracy: 1.0000 - val_loss: 0.0173 - val_accuracy: 0.9960\n",
      "Epoch 177/200\n",
      "4500/4500 [==============================] - 2s 419us/sample - loss: 0.0035 - accuracy: 1.0000 - val_loss: 0.0168 - val_accuracy: 0.9960\n",
      "Epoch 178/200\n",
      "4500/4500 [==============================] - 2s 392us/sample - loss: 0.0034 - accuracy: 1.0000 - val_loss: 0.0168 - val_accuracy: 0.9960\n",
      "Epoch 179/200\n",
      "4500/4500 [==============================] - 1s 272us/sample - loss: 0.0032 - accuracy: 1.0000 - val_loss: 0.0170 - val_accuracy: 0.9960\n",
      "Epoch 180/200\n",
      "4500/4500 [==============================] - 2s 351us/sample - loss: 0.0033 - accuracy: 1.0000 - val_loss: 0.0164 - val_accuracy: 0.9960\n",
      "Epoch 181/200\n",
      "4500/4500 [==============================] - 1s 308us/sample - loss: 0.0031 - accuracy: 1.0000 - val_loss: 0.0164 - val_accuracy: 0.9960\n",
      "Epoch 182/200\n",
      "4500/4500 [==============================] - 1s 295us/sample - loss: 0.0031 - accuracy: 1.0000 - val_loss: 0.0164 - val_accuracy: 0.9960\n",
      "Epoch 183/200\n",
      "4500/4500 [==============================] - 2s 372us/sample - loss: 0.0030 - accuracy: 1.0000 - val_loss: 0.0159 - val_accuracy: 0.9960\n",
      "Epoch 184/200\n",
      "4500/4500 [==============================] - 2s 351us/sample - loss: 0.0029 - accuracy: 1.0000 - val_loss: 0.0162 - val_accuracy: 0.9960\n",
      "Epoch 185/200\n",
      "4500/4500 [==============================] - 1s 309us/sample - loss: 0.0029 - accuracy: 1.0000 - val_loss: 0.0160 - val_accuracy: 0.9960\n",
      "Epoch 186/200\n",
      "4500/4500 [==============================] - 1s 307us/sample - loss: 0.0028 - accuracy: 1.0000 - val_loss: 0.0163 - val_accuracy: 0.9953\n",
      "Epoch 187/200\n",
      "4500/4500 [==============================] - 1s 265us/sample - loss: 0.0028 - accuracy: 1.0000 - val_loss: 0.0162 - val_accuracy: 0.9960\n",
      "Epoch 188/200\n",
      "4500/4500 [==============================] - 1s 297us/sample - loss: 0.0028 - accuracy: 1.0000 - val_loss: 0.0161 - val_accuracy: 0.9960\n",
      "Epoch 189/200\n",
      "4500/4500 [==============================] - 1s 262us/sample - loss: 0.0027 - accuracy: 1.0000 - val_loss: 0.0158 - val_accuracy: 0.9960\n",
      "Epoch 190/200\n",
      "4500/4500 [==============================] - 1s 266us/sample - loss: 0.0025 - accuracy: 1.0000 - val_loss: 0.0160 - val_accuracy: 0.9960\n",
      "Epoch 191/200\n",
      "4500/4500 [==============================] - 1s 270us/sample - loss: 0.0026 - accuracy: 1.0000 - val_loss: 0.0156 - val_accuracy: 0.9960\n",
      "Epoch 192/200\n",
      "4500/4500 [==============================] - 1s 272us/sample - loss: 0.4587 - accuracy: 0.9436 - val_loss: 3.0601 - val_accuracy: 0.5467\n",
      "Epoch 193/200\n",
      "4500/4500 [==============================] - 1s 266us/sample - loss: 0.9706 - accuracy: 0.7185 - val_loss: 0.2870 - val_accuracy: 0.9000\n",
      "Epoch 194/200\n",
      "4500/4500 [==============================] - 1s 273us/sample - loss: 0.1387 - accuracy: 0.9677 - val_loss: 0.0814 - val_accuracy: 0.9860\n",
      "Epoch 195/200\n",
      "4500/4500 [==============================] - 1s 273us/sample - loss: 0.0551 - accuracy: 0.9939 - val_loss: 0.0473 - val_accuracy: 0.9947\n",
      "Epoch 196/200\n",
      "4500/4500 [==============================] - 1s 282us/sample - loss: 0.0279 - accuracy: 0.9995 - val_loss: 0.0353 - val_accuracy: 0.9960\n",
      "Epoch 197/200\n",
      "4500/4500 [==============================] - 1s 283us/sample - loss: 0.0206 - accuracy: 0.9998 - val_loss: 0.0321 - val_accuracy: 0.9960\n",
      "Epoch 198/200\n",
      "4500/4500 [==============================] - 1s 274us/sample - loss: 0.0174 - accuracy: 0.9999 - val_loss: 0.0298 - val_accuracy: 0.9960\n",
      "Epoch 199/200\n",
      "4500/4500 [==============================] - 1s 270us/sample - loss: 0.0151 - accuracy: 0.9999 - val_loss: 0.0276 - val_accuracy: 0.9960\n",
      "Epoch 200/200\n",
      "4500/4500 [==============================] - 1s 306us/sample - loss: 0.0133 - accuracy: 0.9999 - val_loss: 0.0264 - val_accuracy: 0.9960\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(\n",
    "    x=x,\n",
    "    y=y,\n",
    "    epochs=epochs_num,\n",
    "    batch_size=batch_size,\n",
    "    validation_split=0.1,\n",
    "    callbacks=[tensorboard_callback]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Renders the charts for training accuracy and loss.\n",
    "def render_training_history(training_history):\n",
    "    loss = training_history.history['loss']\n",
    "    val_loss = training_history.history['val_loss']\n",
    "\n",
    "    accuracy = training_history.history['accuracy']\n",
    "    val_accuracy = training_history.history['val_accuracy']\n",
    "\n",
    "    plt.figure(figsize=(14, 4))\n",
    "\n",
    "    plt.subplot(1, 2, 1)\n",
    "    plt.title('Loss')\n",
    "    plt.xlabel('Epoch')\n",
    "    plt.ylabel('Loss')\n",
    "    plt.plot(loss, label='Training set')\n",
    "    plt.plot(val_loss, label='Test set', linestyle='--')\n",
    "    plt.legend()\n",
    "    plt.grid(linestyle='--', linewidth=1, alpha=0.5)\n",
    "\n",
    "    plt.subplot(1, 2, 2)\n",
    "    plt.title('Accuracy')\n",
    "    plt.xlabel('Epoch')\n",
    "    plt.ylabel('Accuracy')\n",
    "    plt.plot(accuracy, label='Training set')\n",
    "    plt.plot(val_accuracy, label='Test set', linestyle='--')\n",
    "    plt.legend()\n",
    "    plt.grid(linestyle='--', linewidth=1, alpha=0.5)\n",
    "\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "render_training_history(history)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Test a dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_test:\n",
      " [[[0 0 0 0 0 0 0 1 0 0 0 0]\n",
      "  [0 0 0 0 0 0 1 0 0 0 0 0]\n",
      "  [0 0 0 0 0 0 0 0 0 0 1 0]\n",
      "  [0 0 0 0 0 0 0 0 1 0 0 0]\n",
      "  [0 0 0 0 1 0 0 0 0 0 0 0]\n",
      "  [0 0 0 0 0 0 0 0 0 0 0 1]\n",
      "  [0 0 0 0 0 0 0 0 0 0 0 1]]]\n",
      "\n",
      "y_test:\n",
      " [[[0 1 0 0 0 0 0 0 0 0 0 0]\n",
      "  [0 0 0 0 0 0 1 0 0 0 0 0]\n",
      "  [1 0 0 0 0 0 0 0 0 0 0 0]]]\n"
     ]
    }
   ],
   "source": [
    "x_test, y_test = generate_dataset(dataset_size, sequence_length, max_num, vocabulary)\n",
    "\n",
    "print('x_test:\\n', x_test[:1])\n",
    "print()\n",
    "print('y_test:\\n', y_test[:1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "predictions.shape:  (5000, 3, 12)\n",
      "\n",
      "predictions[0]:\n",
      " [[1.56478808e-09 9.99993443e-01 1.13263614e-10 2.43536555e-13\n",
      "  7.35255086e-12 1.87883997e-11 2.41102582e-10 4.59983891e-11\n",
      "  1.34911238e-08 6.54733321e-06 8.69514460e-11 4.95329960e-13]\n",
      " [4.08798002e-07 2.92953946e-08 1.33197474e-07 7.34924754e-07\n",
      "  1.59472929e-05 1.65897664e-02 9.81849730e-01 1.47053797e-03\n",
      "  6.89475419e-05 3.72986460e-06 1.31091102e-08 1.40613343e-09]\n",
      " [9.87638593e-01 4.40192549e-03 1.97818463e-06 6.63003252e-09\n",
      "  4.55207649e-09 9.64273106e-11 2.73215264e-08 1.80779409e-07\n",
      "  1.56410679e-05 7.94167537e-03 1.62981628e-08 4.15896695e-09]]\n",
      "\n",
      "predictions[1]:\n",
      " [[2.15935381e-09 9.99992371e-01 5.40815170e-09 6.49596765e-11\n",
      "  9.35228422e-11 9.23694662e-11 2.05900808e-09 8.82467655e-10\n",
      "  5.42079519e-08 7.62533909e-06 2.06515055e-10 2.99114275e-11]\n",
      " [3.79572568e-10 6.81736542e-11 2.66999258e-08 2.08649180e-06\n",
      "  1.04209560e-03 9.93228376e-01 5.15519409e-03 5.40546724e-04\n",
      "  3.17595914e-05 1.57793056e-09 1.10365084e-09 2.60308664e-09]\n",
      " [3.24377629e-06 9.20376220e-10 1.31483295e-08 9.00326036e-09\n",
      "  7.24035954e-06 3.99490673e-05 3.25242523e-03 9.86836672e-01\n",
      "  9.84544307e-03 3.07867026e-06 5.86528941e-08 1.19321221e-05]]\n"
     ]
    }
   ],
   "source": [
    "predictions = model.predict(x_test)\n",
    "\n",
    "print('predictions.shape: ', predictions.shape)\n",
    "print()\n",
    "print('predictions[0]:\\n', predictions[0])\n",
    "print()\n",
    "print('predictions[1]:\\n', predictions[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "76+84   = 160 [predict: 160] ✓\n",
      "58+99   = 157 [predict: 157] ✓\n",
      "36+84   = 120 [predict: 120] ✓\n",
      "62+45   = 107 [predict: 107] ✓\n",
      "45+66   = 111 [predict: 111] ✓\n",
      "9+93    = 102 [predict: 102] ✓\n",
      "62+39   = 101 [predict: 101] ✓\n",
      "67+11   = 78  [predict: 78 ] ✓\n",
      "61+15   = 76  [predict: 76 ] ✓\n",
      "89+40   = 129 [predict: 129] ✓\n",
      "81+21   = 102 [predict: 102] ✓\n",
      "13+50   = 63  [predict: 63 ] ✓\n",
      "48+7    = 55  [predict: 55 ] ✓\n",
      "47+37   = 84  [predict: 84 ] ✓\n",
      "9+29    = 38  [predict: 38 ] ✓\n",
      "55+52   = 107 [predict: 107] ✓\n",
      "35+75   = 110 [predict: 110] ✓\n",
      "64+21   = 85  [predict: 85 ] ✓\n",
      "31+14   = 45  [predict: 45 ] ✓\n",
      "11+89   = 100 [predict: 100] ✓\n",
      "18+66   = 84  [predict: 84 ] ✓\n",
      "31+51   = 82  [predict: 82 ] ✓\n",
      "9+51    = 60  [predict: 60 ] ✓\n",
      "37+3    = 40  [predict: 40 ] ✓\n",
      "92+89   = 181 [predict: 181] ✓\n",
      "7+39    = 46  [predict: 46 ] ✓\n",
      "14+73   = 87  [predict: 87 ] ✓\n",
      "15+47   = 62  [predict: 62 ] ✓\n",
      "34+23   = 57  [predict: 57 ] ✓\n",
      "17+26   = 43  [predict: 43 ] ✓\n",
      "83+10   = 93  [predict: 93 ] ✓\n",
      "66+96   = 162 [predict: 162] ✓\n",
      "56+71   = 127 [predict: 127] ✓\n",
      "28+40   = 68  [predict: 68 ] ✓\n",
      "5+77    = 82  [predict: 82 ] ✓\n",
      "61+76   = 137 [predict: 137] ✓\n",
      "69+47   = 116 [predict: 116] ✓\n",
      "59+81   = 140 [predict: 140] ✓\n",
      "91+88   = 179 [predict: 179] ✓\n",
      "18+72   = 90  [predict: 90 ] ✓\n"
     ]
    }
   ],
   "source": [
    "x_encoded = [decode(example, vocabulary) for example in x_test]\n",
    "y_expected = [decode(label, vocabulary) for label in y_test]\n",
    "y_predicted = [decode(prediction, vocabulary) for prediction in predictions]\n",
    "\n",
    "explore_num = 40\n",
    "for example, label, prediction in list(zip(x_encoded, y_expected, y_predicted))[:explore_num]:\n",
    "    checkmark = '✓' if label == prediction else ''\n",
    "    print('{} = {} [predict: {}] {}'.format(example, label, prediction, checkmark))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Debugging the model with TensorBoard\n",
    "\n",
    "[TensorBoard](https://www.tensorflow.org/tensorboard) is a tool for providing the measurements and visualizations needed during the machine learning workflow. It enables tracking experiment metrics like loss and accuracy, visualizing the model graph, projecting embeddings to a lower dimensional space, and much more."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "      <iframe id=\"tensorboard-frame-91f5e234f54a20d\" width=\"100%\" height=\"800\" frameborder=\"0\">\n",
       "      </iframe>\n",
       "      <script>\n",
       "        (function() {\n",
       "          const frame = document.getElementById(\"tensorboard-frame-91f5e234f54a20d\");\n",
       "          const url = new URL(\"/\", window.location);\n",
       "          url.port = 6006;\n",
       "          frame.src = url;\n",
       "        })();\n",
       "      </script>\n",
       "  "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%tensorboard --logdir .logs/fit"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Save a model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_name = 'numbers_summation_rnn.h5'\n",
    "model.save(model_name, save_format='h5')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Converting the model to web-format\n",
    "\n",
    "To use this model on the web we need to convert it into the format that will be understandable by [tensorflowjs](https://www.tensorflow.org/js). To do so we may use [tfjs-converter](https://github.com/tensorflow/tfjs/tree/master/tfjs-converter) as following:\n",
    "\n",
    "```\n",
    "tensorflowjs_converter --input_format keras \\\n",
    "  ./experiments/numbers_summation_rnn/numbers_summation_rnn.h5 \\\n",
    "  ./demos/public/models/numbers_summation_rnn\n",
    "```\n",
    "\n",
    "You may find this experiment in the [Demo app](https://trekhleb.github.io/machine-learning-experiments) and play around with it right in you browser to see how the model performs in real life."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
